gcc编译C源程序
在Ubuntu环境下,使用如下指令安装gcc工具:
sudo apt-get install gcc
使用如下指令查看版本号:
gcc -v
gcc在编译源文件时,会依次调用预处理器,编译器,汇编器,链接器,最后生成可执行的二进制文件。根据需要,我们也可以通过gcc的编译参数来控制程序的编译过程。
-E:只对C源文件进行预处理,不编译。
-S:只编译到汇编文件,不再汇编。
-c:只编译生成目标文件,不进行链接。
-o:指令输出的可执行文件名。
-I:大写的I,在编译时指定头文件的路径
-l:小写的l(like首字母),指定程序使用的函数库
-L:大写的L(like首字母),指定函数库的路径
使用make编译程序
make编译工具的使用场景:
在一个多文件的项目中,如果C源文件过多,如编译Linux内核源码,大概有30 000多个C源文件,使用gcc编译显然不合适了。 针对多文件编程,使用make编译工具可以帮助我们提高编程的编译效率。
make是如何编译C文件的?
make在编译程序时,要依赖一个叫作Makefile的文件:生成一个可执行文件所依赖的所有C源文件都在这个Makefile文件中指定。
Makefile格式:
目标文件:依赖文件
<TAB键> 编译命令
make的使用示例
在一个项目中,有main.c和sum.c
main.c代码如下:
sum.c的代码如下:
编写Makefile文件如下:
Makefile文件中使用。PHONY声明的目标是一个伪目标,伪目标并不是一个真正的文件名,可以看作一个标签。伪目标比较特殊了,一般无依赖,主要用来无条件执行一些命令,如清除编译结果和中间临时文件。
将Makefile文件放置在main.c和sum.c的同一目录下进行使用make指令进行编译了。
运行结果: