为什么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应用程序?减小最终生成的可执行文件的大小,因为嵌入式系统通常对存储空间有严格的限制。 嵌入式系统的存储空间通常非常有限。因此,在链接阶段,需要尽可能地减小最终生成的可执行文件的大小,以确保其能够适应目标设备的存储空间。丢弃未使用的库函数是实现这一目标的有效手段之一。 为了避免不必要的依赖。 如果函数未被使用,链接器按照配置丢弃它们是正常行为。 如果可能的话,尝试使用静态链接方式将这些库函数链接到最终的可执行文件中。但需注意,这可能会增加最终文件的大小。
页:
[1]