GCC的编译C语言的编译过程

1. GCC介绍

编写过C和C++的朋友对GCC一定不会陌生,GCC最初是由GNU开发的C语言编译器,后很快扩展,变得可以支持C++,后来又扩展能够支持更多编程语言,如Fortran、Pascal、Objective-C、Java、Ada、Go以及各类处理器架构上的汇编语言等,所以改名GNU编译器套件(GNU Compiler Collection)。
GCC原本作为GNU操作系统的官方编译器,后来被大多数类UNIX操作系统采纳为标准编译器。

2. GCC编译C语言

常用做法:
gcc hello.c -o hello
编译器会直接生成可执行文件hello。

那么编译器中间经过了哪些步骤呢?

3. 编译过程

3.1 预处理

执行命令
gcc -o hello.i -E hello.c
gcc预处理器将处理以#开头的命令,如#include xxx.h ,预处理器将直接把xxx.h中的内容插入到hello.i中。可通过命令查看最终内容
vi hello.i

3.2 转化为汇编

执行命令
gcc -o hello.s -S hello.i
编译器将c语言编译为汇编语言,可通过命令查看最终内容
vi hello.s

3.3 编译汇编

执行命令
gcc -o hello.o -c hello.s
编译器将汇编语言便以为机器语言保存在hello.o中,这是个二进制文件,可通过命令查看其内容
hexdump hello.o

3.4 链接阶段

执行命令
gcc -o hello hello.o
链接阶段负责将我们程序中使用的公共库进行关联,比如hello.c使用了printf函数,此函数保存在printf.o文件中,链接阶段就负责进行这种关联。链接后的都可执行文件hello,运行之
./hello

4 总结

源文件→预处理OP→汇编化OP→机器码OP→链接OP→可执行文件

注:OP为操作,两端为文件

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容