GCC编译过程及链接原理
1.预处理
处理头文件
预处理就是将要包含(include)的文件插入原文件中、将宏定义展开、根据条件编译命令选择要使用的代码,最后将这些代码输出到一个“.i”文件中等待进一步处理。
gcc -E -o 001.i 001.c
2.编译
编译就是把C/C++代码(比如上面的".i"文件)“翻译”成汇编代码
gcc -S -o 001.s 001.i
3.汇编
汇编就是将第二步输出的汇编代码翻译成符合一定格式的机器代码,在Linux系统上一般表现位ELF目标文件(OBJ文件)
gcc -c -o 001.o 001.s
4.链接
链接就是将汇编生成的OBJ文件、系统库的OBJ文件、库文件链接起来,最终生成可以在特定平台运行的可执行程序
gcc -o 001 001.o
四步合成一步
直接完成4个过程
gcc -o 001 001.o