嵌入式学习第5天
gcc使用方法和工作流程
GCC 工作流程
在 C 程序的编译过程中,依次要进行预处理、编译、汇编、链接四个阶段。这里通过编
译 C 文件 test.c 来展示 GCC 的工作流程。
- 预处理阶段
由于在 test.c 中使用了头文件 stdio.h,所以 GCC 在编译时首先要把头文件 stdio.h
中的内容加载到 test.c 中的首部。
在 shell 中输入命令“gcc -E test.c -o test.i”。其中,参数 E 告诉 gcc 命令只进行
预编译,不做其他处理;参数 o 用来指明输出的文件名为 test.i。命令运行完毕后就会产
生一个名为 test.i 的文件。 - 编译阶段
编译阶段是整个编译过程中最复杂的一个阶段。这里拿自然语言的翻译过程作个对比。
比如在把“I love China”翻译成中文前,需要依次完成以下几个步骤:
1)考察这个句子中每个单词的拼写是不是正确。
2)考察整个句子的语法(比如主谓宾、定状补的结构等)是不是正确。 - 汇编阶段
汇编阶段的任务是把汇编程序翻译成 CPU 可以识别的二进制文件,该文件又称为目标
文件。
在 shell 中输入命令“gcc -c test.s -o test.o”,其中,参数 c 告诉 gcc 命令只进
行汇编,不做其他处理。命令运行完毕后就会产生一个名为 test.o 的目标文件。 - 链接阶段
- 链接阶段的任务就是把程序中所有的目标文件和所需的库文件都链接在一起,最终生
成一个可以直接运行的文件,称为可执行文件。
在 shell 中输入命令“gcc test.o -o test”,运行完毕后就会产生一个名为 test 的
可执行文件。输入命令“./test”执行该文件,就可以得到 test 文件的运行结果“Hello
world!”。