编译器
负责把人能看得懂的记录了代码的文本文件,翻译成计算机能看懂的二进制文件,有预处理器、编译器、链接器
gcc 是由GNU组织为了编译Linux内核代码而开发的一款免费开源的编译器,默认采用C89标准,-std=gnu99可以设置语法标准
常用参数:(区分大小写)
-E 显示预处理的结果 会加入到 a.out 文件的头部
-S 生成汇编代码 生成.s文件
-c 只编译不链接 .o 目标文件 全都是二进制 链接完才能达成目标效果
-o 设置编译结果的名字 一般设置同名.i文件
-I 指定头文件的加载路径 优先度最高
-l 指定要使用的库文件 -lm libm.so 数学库 就算头文件加了math.dio 不加-lm也无法使用数学函数 -lc已经默认加入
-Wall 以更严格的编译标准来检查代码,尽可能多的显示警告 例:定义变量并没有使用会报warning
-Werror 把警告当错误处理 warning->error
C代码变成可执行程序的过程
1、预处理 把源文件翻译成预处理文件
gcc -E xxx.c 显示预处理结果,但是不生成任何文件
gcc -E xxx.c -o xxx.i 生成以.i结尾的预处理文件
2、编译 把预处理文件翻译成汇编文件
gcc -S xxx.i 生成以.s结尾的汇编文件
3、汇编 把得到的汇编文件翻译成二进制的目标文件
gcc -c xxx.s 生成以.o结尾的目标文件
4、连接 把若干个目标文件合并成一个可执行文件
gcc a