【发布时间】:2020-10-20 14:00:32
【问题描述】:
我分析了一个由 Simplicity Studio 生成的项目(Silicon Labs 的 Eclipse IDE 变体,用于他们的微控制器)。
我为基于 arm-none-eabi-gcc 工具链的 ASM/C/C++ 项目使用了默认设置。
对于 G++-Linker-Flags,他们做了一些在我看来非常奇怪的事情:他们打算链接 newlib-nano(即标准库的小版本)。
但是,通常您需要决定是否打算使用重定向并因此链接到 nosys.specs,这也会使您的二进制文件更大,或者是 nano.specs 的简约版本。
但是,他们确实列出了这两个选项,这对我来说没有意义。所以我检查了另一个项目设置(这是在 STM32 的 CM3 上),他们显然也是这样做的。这是为什么呢?
如果我不打算使用重定向(例如文件系统、printf/_write 等),我是否需要列出 nosys.specs?
其他问题:这些标志的顺序是否重要,或者这只是您要添加的所有选项的列表?
-g3 -gdwarf-2 -mcpu=cortex-m3 -mthumb -T "${BuildArtifactFileBaseName}.ld" --specs=nosys.specs -Xlinker --gc-sections -Xlinker -Map="${BuildArtifactFileBaseName}.map" --specs=nano.specs
【问题讨论】: