gcc 是Linux下一个C编译器,同时也支持很多其他的高级语言如C++,JAVA等。
gcc下主要工具有:cpp:预处理器,gcc :符合ISO等标准的C编译器,g++ :基本符合ISO标准的C++编译器,还有汇编器,编译器,链接器等组件,输入文件的类型和传递给gcc的参数决定了gcc调用具体的哪些组件。
一般情况下,c程序的编译过程为:
1、预处理
2、编译成汇编代码
3、汇编成目标代码
4、链接
下面对这四个过程简单的介绍下每个过程使用的命令及生成文件的类型:
1.预处理:使用 -E 参数,输出的文件后缀是 .cpp
gcc -E -o a.cpp a.c
其中wc指令用于显示两个文件的信息,从左到右分别是行数,单词数,字节数。
2.预处理--->汇编文件:-S ,生成文件后缀为.s
可以使用-x参数说明根据指定的步骤进行工作,cpp-output指明从预处理得到的文件开始编译,使用-S说明生成汇编代码后停止工作
gcc -x cpp-output -S -o a.s a.cpp
也可以直接编译到汇编代码:gcc -S a.c
3.编译成目标代码或可执行代码
可以使用生成的汇编文件生成目标代码:gcc –x assembler –c a.s
也直接编译成目标代码: gcc –c a.c -o a
其他相关的命令:
-Wall:打开警告信息 gcc -Wall -o a.c a
优化编译选项:-O0,-O1。。。。。