首页 >后端开发 >C++ >我们如何优化 GCC 和 ld 构建以删除未使用的符号并减少可执行文件的大小?

我们如何优化 GCC 和 ld 构建以删除未使用的符号并减少可执行文件的大小?

Susan Sarandon
Susan Sarandon原创
2024-12-17 09:33:25758浏览

How Can We Optimize GCC and ld Builds to Remove Unused Symbols and Reduce Executable Size?

优化删除 GCC 和 ld 构建中未使用的符号

构建可执行文件时,尤其是基于 ARM 的嵌入式系统,优化可执行文件大小是对于提高性能至关重要。一个值得注意的问题是二进制文件中存在未使用的符号,从而导致不必要的膨胀。

为了缓解 GCC 和 ld 环境中的这一问题,采用了一种两阶段方法:

第一阶段:分离代码段

使用编译器标志 -fdata-sections 和-ffunction-sections 指示编译器将每个翻译单元内的代码划分为表示函数、类和外部变量的不同部分。这可以隔离未使用的符号。

阶段 2:丢弃未引用的节

在链接阶段,使用优化标志 -Wl,--gc 调用链接器-sections 触发链接器丢弃缺少引用的节。这可确保从最终的可执行文件中排除未使用的符号。

例如,考虑一个文件 test.cpp 具有两个函数,其中一个未使用,以下命令将生成一个省略未使用函数的可执行文件:

gcc -Os -fdata-sections -ffunction-sections test.cpp -o test -Wl,--gc-sections

通过采用这种两阶段方法,可以有效地删除未使用的符号,从而显着减小最终可执行文件的大小,从而增强资源受限的嵌入式中的加载性能系统。

以上是我们如何优化 GCC 和 ld 构建以删除未使用的符号并减少可执行文件的大小?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn