GNU gcc编译器
程序员文章站
2022-07-14 13:02:54
...
编译器
负责把人能看懂的代码组成的文本文件,翻译成计算机能看懂的二进制文件,由预处理器、编译器、链接器组成。
gcc是GUN社区为了编译Linux代码而开发的一款免费的编译器,默认采用C89语法标准, -std=gnu99可以设置C99语法
-
常用的参数:
-E 显示预处理的结果 -c 只编译不链接 -o 指定输出结果的名字 -I 指定头文件的加载路径 -S 生成汇编代码 -l(小写L) 指定要使用的库文件 -Wall 尽可能多地产生警告 -Werror 把警告当错误处理 -std 指定编译语法 -D 命令行定义宏 -DDEBUG
C代码变成可执行文件的过程:
-
预处理:
把源文件翻译成预处理文件
gcc -E code.c 显示预处理的结果
gcc -E code.c -o code.i 生成以.i结尾的预处理文件
-
编译:
把预处理文件翻译成汇编文件
gcc -S code.i 生成以.s结尾的汇编文件
-
汇编:
把汇编文件翻译成二进制的目标文件
gcc -c code.s 生成以.o结尾的目标文件
-
链接:
把若干个目标文件合并成一个可执行文件
gcc code.o a.o b.o c.o … 默认生成一个a.out的可执行文件
C文件类型:
.h 头文件
.h.gch 头文件的编译结果,会被优先使用
.c 源文件
.i 预处理文件
.s 汇编文件 .S
.o 目标文件
.a 静态库文件
.so 共享库文件
.out 可执行文件