一、gcc编译C程序
1.编译C文件
sub1.h
#ifndef __SUB1_H
#define __SUB1_H
#include<stdio.h>
float x2x(int a,int b); //计算b除以a的结果
#endif
sub1.c
#include "sub1.h"
//一个简单的除法
float x2x(int a,int b)
{
float ans;
ans=(float)b/a;
return ans;
}
main1.c
#include"sub1.h"
int main()
{
int x=2,y=9; //定义x和y变量
printf("%.2f\n",x2x(x,y)); //输出处理后的值,保留两位小数
return 0;
}
在Ubuntu系统下编译好这三个文件即可。
可参考以下链接:
链接: 在Linux(Ubuntu版)下编写运行C语言程序.
链接: Linux(ubuntu)常用命令及修改文件总结.
2.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程序
我在编写源文件的时候不小心打错了一个字母所以导致出错,使用命令再次返回文件内进行了修改
二、gcc编译与windows编译的比较
可以看到Windows系统下的编译就要简单很多,也不需要我们自己手动生成可编译文件了。相比之下,gcc编译其实更加接近我们计算机的编译原理,而Windows下的编译则更为方便,可以直接使用工具达到目的。
三、makefile编译C程序
使用makefile编译C程序,首先要建立一个makefile文件,在文件内写入需要执行的代码,再进行运行。下面附上一个学习makefile的链接。
链接: Makefile的使用.
引用一段话,我认为这也是学习makefile的重要意义
什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的集成开发环境 (integrated development environment,IDE)都为你做了这个工作,但我觉得要作一个好的和专 业的程序员,makefile还是要懂。这就好像现在有这么多的HTML编辑器,但如果你想成为一个专业人士, 你还是要了解HTML的标签的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会 写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。
简而言之makefile,就是定义编译规则,通过make命令来编译项目的工具。
编译makefile文件
main1:sub1.o main1.c
gcc main1.c sub1.o -o main1
sub1.o:sub1.c
gcc -c sub1.c -o sub1.o
clean:
rm *.o
执行make命令即可得到可执行文件main1,执行make clear即可清除执行过程产生的.o文件。
我这里出现make not found,but can be installed with是因为我没有下载make工具,执行sudo apt install make即可。
四、总结
通过gcc与windows的对比学习,我们可以加深对于计算机编译原理的理解,有助于更加了解计算机本身的运行模式。makefile的实际操作同样让我们对于编译过程的了解有极大的提高,可以让我们更加专业于“计算机”这个行业。