说明
gcc test.c -o test
g++ test.cpp -o test
- 如上,可以很简单的使用一条命令将源码编译成可执行文件,但是实际上编译过程是一个比较复杂的工作,gcc/g++只是编译系统的入口程序,解析用户输入的参数,顺序调用预处理器(cpp)、编译器(ccl/cclplus)、汇编器(as)、链接器(ld),完成以下四个编译过程,生成可执行文件。
- 预编译
- 编译
- 汇编
- 链接
编译过程
预编译(Prepressing)
- 对代码进行预处理(即编译前的处理),执行源码中的预处理指令,例如:文件导入(#include),宏定义展开(#define)等,输出结果是C代码。
编译(Compilation)
- 将预编译产生的代码文件转化为汇编代码,输出结果是汇编代码。
汇编(Assembly)
- 将编译产生的汇编代码进行汇编编译,输出的二进制的目标文件.o。
链接(Linking)
- 将汇编编译产生的.o文件,链接成可执行程序文件(.out)。
使用
灵活
- 使用gcc/g++编译非常灵活
- 可以从源码开始到任何一个步骤停止(-o 可以将输出结果输出到文件),例如:
gcc -E test.c -o test_ne

本文详细解释了gcc/g++编译系统的工作原理,包括预编译、编译、汇编和链接四个步骤,以及其在编译过程中的灵活性和功能扩展性。
最低0.47元/天 解锁文章
5445

被折叠的 条评论
为什么被折叠?



