背景

有时我们的程序会定义一些暂时使用不上的功能和函数,虽然我们不使用这些功能和函数,但它们往往会浪费我们的ROM和RAM的空间。这在使用静态库时,体现的更为严重。有时,我们只使用了静态库仅有的几个功能,但是系统默认会自动把整个静态库全部链接到可执行程序中,造成可执行程序的大小大大增加。

参数详解

为了解决前面分析的问题,我们引入了标题中的几个参数。GCC链接操作是以section作为最小的处理单元,只要一个section中的某个符号被引用,该section就会被加入到可执行程序中去。因此,GCC在编译时可以使用 -ffunction-sections 和 -fdata-sections 将每个函数或符号创建为一个sections,其中每个sections名与function或data名保持一致。而在链接阶段, -gc-sections 指示链接器去掉不用的 section 这样就能减少最终的可执行程序的大小了。

 

CFLAGS += -ffunction-sections -fdata-sections
LDFLAGS += -gc-sections

 

相关文章:

  • 2021-10-17
  • 2021-09-18
  • 2022-12-23
  • 2022-12-23
  • 2022-02-08
  • 2021-07-16
  • 2021-07-03
  • 2022-12-23
猜你喜欢
  • 2021-12-27
  • 2021-11-30
  • 2022-12-23
  • 2022-03-04
  • 2022-02-13
  • 2021-11-08
  • 2021-10-09
相关资源
相似解决方案