一、编译器
负责把人能看得懂的用代码记录的文本文件,翻译成计算机能看懂的二进制文件,由预处理器、编译器、链接器
gcc是由gnu社区为了编译Linux内核代码而开发一款免费的编译器,默认采用C89编译语法,-std=gnu99 可以设置为C99语法
gcc code.c -> a.out(可执行文件、二进制文件)
常用的参数:
-E 显示出预处理结果
-S 生成汇编代码
-c 只编译不链接
-o 设置编译结果的名字
-std= 设置编译语法
-I 指定头文件的加载路径
-l 指定要使用的库文件 例如:-lm
-Wall 更严格地检查代码,尽可能多地产生警告
-Werror 把警告当错误处理
二、C代码源文件变成可执行文件的过程
1、预处理:把源文件翻译成预处理文件
gcc -E code.c 把预处理结果打印到终端
gcc -E code.c -o code.i 生成以.i结尾的预处理文件
2、编译:把预处理文件翻译成汇编文件
gcc -S code.i 生成以.s结尾的汇编文件
3、汇编:把汇编文件翻译成二进制的目标文件
gcc -c code.s 生成以.o结尾的目标文件
4、链接:把若干个目标文件合并生成一个可执行文件
gcc a.o b.o c.o 默认生成a.out可执行文件
gcc a.o b.o c.o -o xxx 指定生成名为xxx可执行文件
三、C文件类型
.h 头文件
.h.gch 头文件的编译结果,它会被优先使用
.c 源文件
.i 预处理文件
.s 汇编文件
.o 目标文件
.so 共享库
.a 静态库



