[STM32F1] 为什么STM32CubeIDE链接器文件会丢弃libc.a libg.a和libgcc.a?

[复制链接]
533|5
 楼主| 封存into 发表于 2025-6-19 23:17 | 显示全部楼层 |阅读模式
为什么STM32CubeIDE链接器文件会丢弃libc.a libg.a和libgcc.a?
在链接器的末尾,会发现:
  /* Remove information from the compiler libraries */  /DISCARD/ :  {    libc.a ( * )    libm.a ( * )    libgcc.a ( * )  }
也许我没有弄对,但是,libc.a不应该包括所有的C标准库代码,所以需要编译一个C应用程序?

classroom 发表于 2025-6-20 16:44 | 显示全部楼层
减小最终生成的可执行文件的大小,因为嵌入式系统通常对存储空间有严格的限制。
flycamelaaa 发表于 2025-6-20 18:45 | 显示全部楼层
嵌入式系统的存储空间通常非常有限。因此,在链接阶段,需要尽可能地减小最终生成的可执行文件的大小,以确保其能够适应目标设备的存储空间。丢弃未使用的库函数是实现这一目标的有效手段之一。
powerantone 发表于 2025-6-20 19:46 | 显示全部楼层
为了避免不必要的依赖。
stormwind123 发表于 2025-6-20 21:46 | 显示全部楼层
如果函数未被使用,链接器按照配置丢弃它们是正常行为。
probedog 发表于 2025-6-20 22:47 | 显示全部楼层
如果可能的话,尝试使用静态链接方式将这些库函数链接到最终的可执行文件中。但需注意,这可能会增加最终文件的大小。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

68

主题

126

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部