gcc编译过程中常用的参数解析
gcc/g++指令选项 | 功 能 |
---|---|
-E(大写) | 预处理指定的源文件,不进行编译。 |
-S(大写) | 编译指定的源文件,但是不进行汇编。 |
-c | 编译、汇编指定的源文件,但是不进行链接。 |
-o | 指定生成文件的文件名。 |
-llibrary(-I library) | 其中 library 表示要搜索的库文件的名称。该选项用于手动指定链接环节中程序可以调用的库文件。建议 -l 和库文件名之间不使用空格,比如 -lstdc++。 |
-ansi | 对于 C 语言程序来说,其等价于 -std=c90;对于 C++ 程序来说,其等价于 -std=c++98。 |
-std= | 手动指令编程语言所遵循的标准,例如 c89、c90、c++98、c++11 等。 |
-g | 启用这个选项会在最后生成的可执行文件中包含源代码的符号信息,这样才能在后续过程中使用gdb等调试工具对程序进行调试。 |
-Wall | 这个选项表示在编译源代码的过程中报告其中出现的警告信息,不开启此选项的话gcc默认可能会忽略某些编译过程中出现的警告。 |
-Werror | 开启此选项后,gcc在编译源代码的时候不止会捕获所有的警告信息,而且在遇到警告时会停止编译。开启次选项的目的主要在于提高代码的书写质量。 |
-I | 此选项后面一个目录。默认情况下,gcc会从系统的头文件目录(Linux下是/usr/include/)下搜索头文件,加上此选项后,此选项后面所跟着的目录也会被列入头文件搜索路径。 |
-O0 | 效果等同于不加-O选项,即不对代码做任何程度的优化。 |
-O1 | 这是最基本的优化等级。编译器会在不花费太多编译时间的同时试图生成更快更小的代码。这些优化是非常基础的,但一般这些任务肯定能顺利完成。 |
-O2 | -O1的进阶。这是推荐的优化等级,除非你有特殊的需求。-O2会比-O1启用多一些标记。设置了-O2后,编译器会试图提高代码性能而不会增大体积和大量占用的编译时间。 |
-O3 | 这是最高最危险的优化等级。用这个选项会延长编译代码的时间,并且在使用gcc4.x的系统里不应全局启用。自从3.x版本以来gcc的行为已经有了极大 地改变。在3.x,-O3生成的代码也只是比-O2快一点点而已,而gcc4.x中还未必更快。用-O3来编译所有的软件包将产生更大体积更耗内存的二进 制文件,大大增加编译失败的机会或不可预知的程序行为(包括错误)。这样做将得不偿失,记住过犹不及。在gcc 4.x.中使用-O3是不推荐的 |
-C | 在预处理后的输出中保留源文件中的注释 |
-B<目录> | 将目录添加到编译器的搜索路径中 |
-V | 显示所有编译步骤的调试信息。 |
-static | 使用静态链接。 |
-shared | 生成共享文件 |
-D | 开启编译时的宏 |
-fPIC | 创建独立的(无关联的)地址信息代码。 |
-m486 | 针对 486 进行代码优化 |
-w | 不生成任何警告信息 |