Ubuntu18.04系统的初步使用以及使用gcc和Makefile编译C程序
文章目录
前言:写作目的
本文的写作目的是使读者安装Ubuntu系统后能像windows系统一样能够初步使用虚拟机以及探究使用gcc和Makefile编译C程序的区别。
一、初步使用虚拟机
虚拟机安装成功默认显示语言是英文,如果你想修改系统语言的话参考文章链接:https://blog.csdn.net/qq_39567970/article/details/121769839
在安装好虚拟机后,有的虚拟机不能使用复制粘贴,启用复制粘贴以及设置快捷键参考文章链接:https://blog.csdn.net/qq_41940277/article/details/122610916
Ubuntu系统一般采用 apt-get 命令进行某个软件的在线查找和安装,默认官方的软件源仓库位于国外,下载速度较慢。因此我们要修改系统参数,选择国内镜像软件源仓库,以提高软件安装速度。
参考文章链接:https://blog.csdn.net/m0_48233584/article/details/106430699
现在你的虚拟机已经是可以像Windows一样快捷地操作了,但是如果你想运行C语言程序的话还需要准备gcc编译器,关于gcc编辑器的安装以及使用参考文章链接:https://blog.csdn.net/hujiangwei8023/article/details/88418610
在开始编写程序之前,我们还需要熟悉文本编辑器的使用,在本文使用的文本编辑器是vim,参考文章链接:https://www.runoob.com/linux/linux-vim.html
二、使用gcc和Makefile编译C程序
1.直接使用gcc编译C程序
编写程序
使用C语言编写以下程序,代码如下:
//编写main1.c
#include"sub1.h"
int main()
{
int x=2,y=9; //定义x和y变量
printf("%.2f\n",x2x(x,y)); //输出处理后的值,保留两位小数
return 0;
}
//编写sub1.h
#ifndef __SUB1_H
#define __SUB1_H
#include<stdio.h>
float x2x(int a,int b); //计算b除以a的结果
#endif
//编写sub.c
#include "sub1.h"
/*-----------------*/
/* 参数:a,b */
/* 返回值:ans */
/*----------------*/
float x2x(int a,int b)
{
float ans;
ans=(float)b/a;
return ans;
}
gcc编译原理
这里我们以常见的hello.c程序为例:
gcc编译过程
步骤一
命令:gcc -c sub1.c
作用:将sub1.c程序转换为目标文件sub1.o
步骤二
命令:gcc main1.c sub1.o -o main1
作用:编译main1.c文件为目标文件main1.o,然后链接sub1.o目标文件生成main1可执行文件
步骤三
执行./main1命令,即可执行编译生成的main1程序
ll: ls -l的缩写
2.使用Windows平台编译程序
工具:Visual Studio Code
程序:与Ubuntu系统上一致
3.使用makefile 编译C程序
一般的编译过程,首先编译依赖库文件,然后编译main函数,如果main.c中依赖的函数过多或调用别人提供的o库文件,每次编译会非常麻烦。所以我们引入makefile,
创建Makefile文件
需要注意的细节是,图中文件编写得并不规范,在命令前需要用tab键开头,文中是书写效果一样,但是并不规范的写法。
正确写法的显示效果如下:
编译C程序
总结
本次实验对于一个初次接触虚拟机的,有一定编程经验的初学者非常友好,保留了探索性难度也不是很高,但是带给我的理解认知却是更进一步的,通过本次实验,我更加熟悉了Ubuntu系统的基础操作,掌握使用诸多命令,以及理解了原初计算机编译程序的过程,它并不是像windows上一样是一键编译还有需要配置许多json的过程,在Ubuntu上我体会到了靠原理去编译程序多么便捷,单纯,直接。并且能让我们直观地感受到C语言程序是如何一步步变成可执行文件的。
参考
参考实验流程与文章格式:https://blog.csdn.net/qq_45237293/article/details/108741893
https://www.cnblogs.com/zlee-home/p/13708004.html