编译&链接过程编写的C/C++源代码无法直接运行,需要转换成机器可以理解的可执行目标文件才能执行,这个转换的过程叫做编译与链接。
- 编译是把文本形式的源文件转化成机器语言形式的目标文件;
- 链接是把目标文件、操作系统启动代码和使用到的库文件组织在一起形成可执行文件的过程。
0x01 预处理 & 预编译【预处理器cpp】
gcc -E test.c > test.i
根据预处理指令来修改源代码(优点:可以用来适应不同的计算机和操作系统)。
- 宏定义指令
- 条件编译指令
- 头文件包含指令
- 特殊符号识别
预处理阶段并不属于预编译过程
预编译程序所完成的基本上是对源程序的"替换"工作。经过此替换后,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步,此输出文件将作为编译程序的输出而被翻译成为机器指令。
预处理和预编译的区别还不太清楚,查明白了再补充
0x03 编译【编译器egcs】
gcc -o test.s -S test.i
gcc -o test.s -S test.c
0x04 汇编【汇编器as】
gcc -o test.o -c test.c
0x05 链接【链接器ld】
gcc -o test test.o
参考链接:
http://www.cppblog.com/SEMAN/archive/2005/11/30/1440.html
网友评论