如果二进制文件大小不是问题,那么使用-g而不是在脱离性能的关键环境中运行二进制文件会有什么缺点? 我有很多的磁盘空间,但二进制是密集的CPU,并使用大量的内存。 该二进制文件被加载一次,并活着几个小时。 编辑: 我想使用带有debugging信息的二进制文件的原因是在发生分段错误时生成有用的核心转储文件。
我需要严格地优化我的可执行文件的大小( ARM开发),我注意到在我的当前构buildscheme( gcc + ld )中未使用的符号没有被剥离。 对于生成的可执行文件/库, arm-strip –strip-unneeded使用arm-strip –strip-unneeded不会改变可执行文件的输出大小(我不知道为什么,也许根本就不行) 。 修改我的build筑物pipe道的方式(如果存在的话)会是什么方式,以便从结果文件中去除未使用的符号? 我甚至不会想到这一点,但是我目前的embedded式环境并不是非常“强大”,即使在2M节省了500K ,也可以获得非常好的加载性能。 更新: 不幸的是,我使用的当前gcc版本没有-dead-strip选项和-ffunction-sections… + –gc-sections对于ld -ffunction-sections… + –gc-sections没有给出任何显着差异的结果输出。 我感到震惊的是,这甚至成为一个问题,因为我确信gcc + ld应该自动剥离未使用的符号(为什么他们甚至不得不保留它们?)。