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