封存into 发表于 2025-6-19 23:17

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

为什么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

如果可能的话,尝试使用静态链接方式将这些库函数链接到最终的可执行文件中。但需注意,这可能会增加最终文件的大小。
页: [1]
查看完整版本: 为什么STM32CubeIDE链接器文件会丢弃libc.a libg.a和libgcc.a?