我需要严格优化可执行文件的大小(ARM
开发),并且我注意到在我当前的构建方案(gcc
+ ld
)中,未使用的符号没有被剥离。
arm-strip --strip-unneeded
所产生的可执行文件/库的用法不会更改可执行文件的输出大小(我不知道为什么,也许根本无法更改)。
修改我的构建管道的方式(如果存在)是什么,以便从生成的文件中删除未使用的符号?
我什至不会想到这一点,但是我当前的嵌入式环境不是非常“强大”,并且甚至节省500K
了2M
结果,从而极大地提高了加载性能。
更新:
不幸的是,目前的gcc
版本我使用不具备-dead-strip
选项和-ffunction-sections... + --gc-sections
用于ld
没有给出结果输出任何显著差异。
我感到震惊的是,这甚至成为了问题,因为我确定gcc + ld
应该自动剥离未使用的符号(为什么还要保留它们?)。
boost
库的现有应用程序,则.exe
由于我当前嵌入式运行时的规范,结果文件包含许多未使用的目标文件,启动10mb
应用程序所花费的时间比例如启动500k
应用程序要长得多。