为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C++ C
斯蒂芬大帝 2019-07-05 13:00:52
GCC和ld如何删除未使用的C/C+符号?我需要严格优化可执行文件的大小(ARM),我注意到在我当前的构建方案中(gcc + ld)未使用的符号不会被剥去。的用法arm-strip --strip-unneeded对于生成的可执行文件/库,不会更改可执行文件的输出大小。(我不知道为什么,也许根本不能).会有什么办法(如果存在)修改我的建筑物管道,以便从结果文件中删除未使用的符号?我甚至不会想到这一点,但我目前的嵌入式环境并不是很“强大”,甚至可以保存。500K离开2M结果是一个非常好的加载性能提高。最新情况:不幸的是gcc我使用的版本没有-dead-strip选项和-ffunction-sections... + --gc-sections为ld对结果的输出没有任何显着的差异。我很震惊这甚至变成了一个问题,因为我确信gcc + ld应该自动删除未使用的符号(为什么它们必须保留它们?)。
查看完整描述

3 回答

?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

如果这条线是值得相信的,你需要提供-ffunction-sections-fdata-sectionsGCC将把每个函数和数据对象放在自己的部分。然后你给我--gc-sections移除未使用的部分。


查看完整回答
反对 回复 2019-07-05
  • 3 回答
  • 0 关注
  • 1155 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信