从源代码到可执行文件的过程: 1.预处理(preprocessing) 2.编译(compilation) 3.汇编(assembly) 4.连接(linking)
预处理: 运行预处理命令,包括头文件、宏、条件编译等,文件由c/cpp->>.i; gcc 中用cpp程序
编译: 从c/c++代码 .i 文件翻译成汇编,文件有.i->>.s;gcc中用cc1;可以用 gcc main.c -v 看详细找到cc1的位置
汇编: 从会变代码翻译成机器代码(OBJ文件,linux下是ELF), .s->>.o;gcc中用as程序
连接: 将系统OBJ、库文件、源代码生成的OBJ连接起来,生成特定平台的可执行文件;gcc中用ld程序
以上这些过程,其实gcc一个程序就能搞定从源代码到可执行程序的转换,隐含调用了以上过程。 |