Loading

gcc节省空间,链接时自动去除未调用的函数

  1. 编译c文件时,增加-ffunction-sections参数,作用是让每个函数放在单独一个section
  2. 链接时,增加-Wl,-gc-sections参数,自动去除没有被调用的函数section, 没有被调用的全局变量
  3. 对于需要强制保留的section, 在linker文件中,用KEEP(*(.xxx))标出
  4. 函数section的名字类似.text.foo, 所以linker文件中的*(.text)要改为*(.text*)
  5. 注意到有些函数明明有调用,却被去除了,这是因为编译器自动将其优化为内联函数,在调用处展开了,一般不用去管。
  6. 有特殊需求必须禁止内联的话:__attribute__ ((noinline))
posted @ 2025-07-07 11:21  gamesun  阅读(71)  评论(0)    收藏  举报