程序编译的四个阶段
1.预处理
1.1宏替换
1.2头文件展开
1.3去注释
1.4条件编译
gcc -E [file] -o [file].i
2.编译
1.语法语义的检测
gcc -S [file] -o [file].s
将源代码转化成为汇编代码
3.汇编
将汇编代码转化成为机器代码(二进制代码)
gcc -c [file] -o [file].o
4.链接
1.用目标文件+库文件生成可执行程序
静态链接:
gcc 命令行当中,需要增加一个参数:-static
动态链接:
默认就是动态链接的
make&makefile
make的解释makefile文件的规则
1.make会在当前目录下找名字叫“Makefile”或“makefile”的文件
2.永远只为生成第一个目标对象而服务
3.若目标对象相对于依赖对象而言,较新,则不生成
4.make在生成第一个目标对象的时候,如果依赖对象也需要后续生成,则先生成依赖对象之后,使用依赖对象生成目标对象
makefile文件下的伪命令
目的:一般用来删除文件用
格式:.PHONY:目标对象
“伪目标”:例:clean,all,我们声明一个“all”的伪目标,其依赖于其他目标,由于伪目标的特性是总是被执行的,所以其依赖的目标总是不如“all”新,所以命令“make clean”可以删除“all”后的依赖对象也就是这个伪目标的依赖目标。