GCC编译器驱动程序读取源程序文件hello.c,并把它翻译成一个可执行目标文件hello。这个翻译过程分为四个阶段:预处理(Preprocessing)、编译(Compilation)、汇编(Assembly)、链接(Linking)。执行这四个阶段的程序(预处理器、编译器、汇编器、和链接器)一起构成了编译系统。预...
处理源代码文件中“#”开始的预编译指令。(如#include,#define等) 处理“#include”预编译指令,将被包含的头文件插入到预编译指令的位置。 删除所有注释 添加行号和文件标识 打开命令行->输入g++ -E hello_world.cpp -o hello_world.i进行预处理 生成预处理文件 “hello_world.i” 编译 词法分析:源代码经过扫...
gcc把预处理后的文件进一步处理,变成和原始的C文件等价的 .s 汇编文件,这是一个人工可以读懂的文件。 4、之后,gcc就省事了。它把 .s 文件交给gas(一种GNU assembler)进行处理,生成 .o 文件。 5、之后,再使用ld(一种GNU linker)进行处理,把文件中使用到的C库程序全部都链接到一起。最终形成一个可执行文件。
(1)gcc/g++完成编译的过程 A:预处理 B:编译 C:汇编 D:链接 (2)gcc/g++选项 (3)重要概念:函数库 A:gcc/g++在哪实现了函数 B:静态库与动态库 (1)gcc/g++完成编译的过程 A:预处理 预处理主要包括宏定义,文件包含,条件编译,去注释 输入gcc -E hello.c -o hello.i,其中选项E作用是让gcc在预处理后...
1.1、预处理阶段 1.2、编译阶段 g++\gcc\GCC的区别与联系 参考链接 1、程序编译的整体流程 以下面简单的程序hello.c为例,讲解程序编译的整体流程。 #include<stdio> int main() { printf("hello, world\n"); return 0; } hello程序的生命周期是从一个源程序(或者说源文件)开始的,即程序员通过编辑器创建并...