1. 源代码编译预处理:在预处理过程中,对源代码文件中的文件包含(include)、预编译语句(如宏定义define等)进行分析。
gcc -E hello.c -o hello.i
2. 经过编译器,生成汇编代码:
gcc -S hello.i -o hello.s
3. 经过汇编器,生成目标代码:
gcc -c hello.s -o hello.o
4. 经过链接器(负责将程序的目标文件与所需的所有附加的目标文件连接起来,附加的目标文件包括静态连接库和动态连接库),生成可执行程序:在链接阶段,所有的目标文件被安排在可执行程序中的恰当的位置,同时,该程序所调用到的库函数也从各自所在的档案库中连到合适的地方。
gcc hello.o -o hello
5. 运行可执行文件:
./hello
6. 上述步骤可以放在一起执行,gcc内部自动进行一系列处理:
gcc hello.c -o hello
./hello