相关疑难解决方法(0)

如何用GCC和ld删除未使用的C/C++符号?

我需要严格优化可执行文件的大小(ARM开发),我注意到在我当前的构建方案(gcc+ ld)中,未使用的符号不会被剥离.

的用法arm-strip --strip-unneeded为生成的可执行文件/库不改变可执行文件的输出大小(我不知道为什么,也许它根本不能).

修改我的构建管道的方式是什么(如果存在),以便从结果文件中删除未使用的符号?


我甚至都不会想到这一点,但我当前的嵌入式环境并不是非常"强大",甚至500K可以节省2M非常好的加载性能.

更新:

不幸的是,gcc我使用的当前版本没有-dead-strip选项,并且-ffunction-sections... + --gc-sectionsfor ld不会对结果输出产生任何显着差异.

我很震惊,这甚至成了问题,因为我确信gcc + ld应该自动删除未使用的符号(为什么他们甚至要保留它们?).

c c++ gcc strip ld

107
推荐指数
10
解决办法
10万
查看次数

未使用的功能会被优化吗?

一个相当简单的问题......这些天的编译器倾向于进行大量的优化.它们是否也从最终输出中删除未使用的函数?

c c++ compiler-construction

49
推荐指数
5
解决办法
3万
查看次数

标签 统计

c ×2

c++ ×2

compiler-construction ×1

gcc ×1

ld ×1

strip ×1