gcc 编译控制选项
gcc 编译控制选项
前面已经讲过, gcc 的基本用法是:
$ gcc [选项] [文件名]
gcc 有很多编译控制选项,使得 gcc 可以根据不同的参数进行不同的编译处理,可供 gcc
调用的参数大约有 100 来个,但实际使用中并不会用到这么的多选项和参数。这里只介绍一
些最基本和常用的控制选项以及参数,如表 10.3 所列。
表 10.3 gcc 常用选项和参数
名称 | 功能描述 |
-c | 只编译不链接。编译器只是将输入的.c 等源代码文件生成.o 为后缀的目标文件,通 常用于编译不包含主程序的子程序文件 |
-S | 只对文件进行编译,不汇编和链接 |
-E | 只对文件进行预处理,不编译汇编和链接 |
-o output_filename | 确定输出文件的名称为 output_filename,这个名称不能和源文件同名。如果不给出 这个选项, gcc 就给出预设的可执行文件 a.out |
-g | 产生符号调试工具(GNU 的 gdb)所必要的符号信息,要想对源代码进行调试,就必 须加入这个选项。 g 也分等级,默认是-g2, -g1 是最基本的, -g3 包含宏信息 |
-DFOO=BAR | 在命令行定义预处理宏 FOO,值为 BAR |
-O | 对程序进行优化编译、链接。采用这个选项,整个源代码会在编译、链接过程中进 行优化处理,这样产生的可执行文件的执行效率可以提高,但是,编译、链接的速 |
度就相应地要慢一些 | |
-ON | 指定代码的优化等级为 N,可取值为 0、 1、 2、 3; O0 没有优化, O3 优化级别最高 |
-Os | 使用了-O2 的优化部分选项,同时对代码尺寸进行优化 |
-Idirname | 将 dirname 目录加入到程序头文件搜索目录列表中,是在预编译过程中使用的参数 |
-L dirname | 将 dirname 目录加入到库文件的搜索目录列表中 |
-l FOO | 链接名为 libFOO 的函数库 |
-static | 链接静态库 |
-ansi | 支持 ANSI/ISO C 的标准语法,取消 GNU 语法中与该标准相冲突的部分 |
-w | 关闭所有警告,不建议使用 |
-W | 开启所有 gcc 能提供的警告 |
-werror | 将所有警告转换为错误,开启该选项,遇到警告都会中止编译 |
-v | 显示 gcc 执行时执行的详细过程, 以及 gcc 和相关程序的版本号 |