在 Linux 平台上使用 g++ 编译器时,可以通过添加链接器选项来优化生成的二进制文件。
-O1
:优化级别 1。 执行函数内联和循环展开等基本优化。 编译速度相对较快,生成的二进制文件较小。
-O2
:优化级别 2。 在level 1的基础上进行进一步的优化,如指令调度、内存访问优化等。 编译速度会更慢,生成的二进制文件也会更小。
-O3
:优化级别 3。 在level 2的基础上进行进一步的优化,如死代码去除、常量传播等。 ETC。 它的编译速度最慢,生成的二进制文件最小。
-flto
(链接时优化):在链接阶段优化整个程序可以提高生成的二进制文件的性能。进一步改善。 请注意,启用 -flto
会增加链接时间。
-s
(符号表删除):删除符号表信息,减少生成的二进制文件的大小。 这对于需要保密的程序或者您只关心程序的执行性能时非常有用。
-Wl,--strip-all
:在链接阶段删除所有符号信息,并进一步减小生成的二进制文件的大小。 。
-Wl,--gc-sections
:在链接阶段执行垃圾收集,以删除未使用的代码并减少数据生成。 。 二进制文件大小。
-no-as-needed
:关闭链接器的“按需”选项,以便确保所有必需的库都存在。已链接。 使用二进制文件构建。
-rdynamic
:允许动态链接器解析符号引用。 这对于调试和分析工具很有用。
-pie
(位置无关代码):生成位置无关的可执行文件。 这提高了多核处理器的性能。
根据您的实际需要,您可以选择合适的链接器选项来优化g++编译过程。 例如,如果您担心程序执行性能,请尝试使用 -O2
或 -O3
选项。 如果关心生成的二进制文件的大小,使用-s
、-Wl,--strip-all
和-Wl,-即可。 -gc-sections
选项。
评论前必须登录!
注册