分类: LINUX
2012-08-27 10:20:44
关于GCC的重要知识点。
1,GCC编译程序的四个阶段。
2,GCC常用的编译选项。
-----------------------------------------------------------------------
一,GCC编译的四个阶段。
1,预处理。
2,编译。
3,汇编。
4,链接。
-----------------------------------------------------------------------
二,GCC常用编译选项详解。(都来自于GCC使用手册)
由于GCC的编译选项很多,所以为了方便,将选项分类。
1,调试选项。
常用的调试选项就两个,一个 -g 另外一个就是 -gstabs
-g : 产生调试器GDB所需要的符号信息。
-gstabs:该调试选项多是用来调试汇编。比如说如果使用as编译ATT汇编,
然后用gdb调试的话就可以在用as编译的时候加上-gstabs选项。
2,目录选项。
常用的目录选项也只有两个。
-Idir : 添加头文件搜索的目录列表。一般GCC搜索头文件的默认目录是/usr/
include/如果在工程应用中程序员自己定义了一个头文件目录,就用
可以使用-I将该目录追加上。
-Ldir:添加库文件搜索的目录列表。一般GCC搜索库文件的默认目录是/usr/
lib。如果在工程项目中程序员自己生成了很多的库文件,就可以使用-L
链接,将该库文件的搜索目录追加上。
3,链接选项。
-llibrary:连接名为 library 的库文件.
库文件的真正名字是`liblibrary.a'
-static:静态编译。
该选项是不使用动态库,将所有的链接库都整合到可执行文件中去。
可以看出加该参数的编译方式的可执行文件的大小比没有加该参数
的编译方式大很多。使用静态编译常用于反汇编一些可执行文件,
这样把库中都做了些什么都可以看得到。
-shared:生成共享目标文件。
该参数多在制作动态库的时候使用,用该参数生成的object可以
是共享的。通过链接可以其他OBJ文件编译为可执行文件。
4,总体选项
-o file:
指定输出文件为 file.该选项不在乎 GCC 产生什么输出,无论是可执
行文件,目标文件,汇编文件还是 预处理后的 C 代码.
如果没有使用`-o'选项,默认的输出结果是:可执行文件为`a.out', `source.
suffix '的目标文件是`source.o',汇编文件是 `source.s',而预处理后的
C 源代码送往标准输出.
-c :编译或汇编源文件,但是不作连接.编译器输出对应于源文件的目标文件.
该参数在制作静态库的时候经常用。
-E:预处理后即停止,不进行编译.预处理后的代码送往标准输出.
-S:编译后即停止,不进行汇编.对于每个输入的非汇编语言文件,
输出文件是汇编语言文件.
5,优化选项。
待序...
-----------------------------------------------------------------------