gcc节省空间,链接时自动去除未调用的函数
- 编译c文件时,增加
-ffunction-sections参数,作用是让每个函数放在单独一个section - 链接时,增加
-Wl,-gc-sections参数,自动去除没有被调用的函数section, 没有被调用的全局变量 - 对于需要强制保留的section, 在linker文件中,用
KEEP(*(.xxx))标出 - 函数section的名字类似
.text.foo, 所以linker文件中的*(.text)要改为*(.text*) - 注意到有些函数明明有调用,却被去除了,这是因为编译器自动将其优化为内联函数,在调用处展开了,一般不用去管。
- 有特殊需求必须禁止内联的话:
__attribute__ ((noinline))

浙公网安备 33010602011771号