GCC编译链接时移除未使用的代码
编译时把数据和函数放到单独的section中,然后链接的时候抛弃掉未使用的section就可以了。
也就是组合使用CFLAGS: -ffunction-sections -fdata-sections
和 LDFLAGS: -Wl,--gc-sections
1 | $ cc foo.c -o foo -Os -fdata-sections -ffunction-sections -Wl,--gc-sections -s |
-s 选项剥离掉调试信息,可以进一步减小目标文件的尺寸。
References:
[1]Removing Unused Functions/Dead Codes with GCC/GNU-ld
[2]Re: Removing unused functions/dead code