- gcc 执行编译工作的时候总共会经过4步:
- 预处理,生成 .i 的文件【预处理器cpp】
- 将预处理后的文件转换成汇编语言,生成文件.s[编译器egcs]
- 由汇编变为目标代码(机器代码)生成.o的文件[汇编器as]
- 链接目标代码,生成可执行程序[链接器ld]
- 参数解释:
- CC
- 详细解释见这儿:点击这儿
- CFLAGS 和 CXXFLAGS
- CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。大多数程序和库在编译时默认的优化级别是"2"(使用"-O2"选项)并且带有调试符号来编译,也就是 CFLAGS="-O2 -g", CXXFLAGS=$CFLAGS 。事实上,"-O2"已经启用绝大多数安全的优化选项了。另一方面,由于大部分选项可以同时用于这两个变量,所以仅在最后讲述只能用于其中一个变量的选项。[提醒]下面所列选项皆为非默认选项,你只要按需添加即可
- 先说说"-O3"在"-O2"基础上增加的几项:
- -finline-functions
- 允许编译器选择某些简单的函数在其被调用处展开,比较安全的选项,特别是在CPU二级缓存较大时建议使用
- -funswitc
- -finline-functions
- 先说说"-O3"在"-O2"基础上增加的几项:
- CFLAGS 表示用于 C 编译器的选项,CXXFLAGS 表示用于 C++ 编译器的选项。这两个变量实际上涵盖了编译和汇编两个步骤。大多数程序和库在编译时默认的优化级别是"2"(使用"-O2"选项)并且带有调试符号来编译,也就是 CFLAGS="-O2 -g", CXXFLAGS=$CFLAGS 。事实上,"-O2"已经启用绝大多数安全的优化选项了。另一方面,由于大部分选项可以同时用于这两个变量,所以仅在最后讲述只能用于其中一个变量的选项。[提醒]下面所列选项皆为非默认选项,你只要按需添加即可
- CC
gcc 参数详解 | (待完善)
最新推荐文章于 2022-03-02 19:38:45 发布