GCC 是一个功能强大的编译器,其编译选项非常多,有些选项通常不会用到。
GCC 从最初的一个试验型的玩具发展到现在 Linux 环境下的标准编译器,其命令选项也从最开始的 4 个发展到了现在的上千个。本节只介绍常用的 GCC 编译选项。
gcc 是一个功能强大的编译器,其编译选项非常多。有些选项一般程序员根本不会用到。因此将所有的编译选项全部列出讲解是不明智的。下面只对一些 gcc 编译器的常 用选项进行详细的讲解,这些选项在实际编程过程中非常实用。gcc 的常用选项如下表所示。
注意:gcc 编译选项会区分大小写。因此-o
选项和-O
选项的效果是不一样的。前者表示源文件编译成为可执行文件,后者表示将源文件编译成为可执行文件并且进行一级优化。
-S
将C语言源文件编译为汇编语言,但是并不汇编该程序。使用该选项,我们可以查看C语言代码对应的汇编代码。
-E 选项
-E
选项将C语言源文件进行预处理,但是并不编译该程序。对于一般的预处理问题,可以使用这个选项进行查看,例如,宏的展开问题、文件的包含问题等。
-I 选项
由于指定包含的头文件的目录,这一点对于大型的代码组织来说是很有用的。
-g 选项
-g
选项可生成能被 gdb 调试器所使用的调试信息。只有使用了该选项后生成的可执行文件,才带有程序中引用的符号表。这时 gdb 调试程序才能对该可执行程序进行调试。
还有另一个 GCC 选项,可以方便地一次获得全部的中间输出文件,这就是-save-temps。当使用该选项时,GCC
会正常地编译和链接,但是会把预处理器输出、汇编语言和对象文件全部存储在当前目录下。使用 -save-temps
选项所生成的中间文件,与对应的源文件具有相同的文件名,但文件扩展名分别为.i、.s和.o,分别表示为预处理输出、汇编语言输出和对象文件。
还有另一个 GCC 选项,可以方便地一次获得全部的中间输出文件,这就是-save-temps。当使用该选项时,GCC 会正常地编译和链接,但是会把预处理器输出、汇编语言和对象文件全部存储在当前目录下。使用 -save-temps 选项所生成的中间文件,与对应的源文件具有相同的文件名,但文件扩展名分别为.i、.s和.o,分别表示为预处理输出、汇编语言输出和对象文件。
具体的介绍放在下一篇介绍。