除了最基本的压缩和去除调试信息外,还有
1 LTO(链接时优化,从GCC 4.7.0 开始支持)
2 -ffunction-sections, -fdata-sections配合--gc-sections,每个函数和变量形成单独的section,再去除没有被引用的。(仍然保留必要系统库,http://elinux.org/images/2/2d/ELC2010-gc-sections_Denys_Vlasenko.pdf)
3 一些大的占用目标文件存储的变量,改为动态分配
4 CP+DP或者非对称多核环境下,有些函数和变量只在某种核中使用,排查
注意,在MIPS中,第二条并不实用,因为MIPS的目标文件中,有一个.pdr section,其中包含文件中出现的所有全局变量和函数名,已经有些类似.reloc。所以对应的section或函数,即使想通过选项显式去除(ld/objcopy选项)也达不到目的,此时只能通过修改binutils才行...