我似乎无法理解为什么我的代码会从libc_nano.a库中链接一些
"arm-none-eabi-gcc.exe (GNU Tools for ARM Embedded Processors) 5.2.1 20151202 (release) [ARM/embedded-5-branch revision 231848]版权所有 (C) 2015自由软件基金会。这是免费软件;请查看源代码以了解复制条件。没有任何保证;甚至适用于特定目的的适销性或适用性。
printf
库函数,即使我从未使用过任何printf
。它至少会占用2K的宝贵闪存空间。我可以在我的链接器映射文件中看到_printf_i
、_vfprintf_r
、_vfiprintf_r
等部分。
我尝试过:
- 使用Wl,--exclude-libs选项
- 在链接脚本中使用EXCLUDE_FILE(..)
但这些都不能使符号从映射文件中消失...
我的gcc选项:
CFLAGS = -Og -Wall -g3 -Wdouble-promotion -mcpu=cortex-m0 -mthumb -fmessage-length=0 -ffunction-sections -mfloat-abi=soft -DUSE_HAL_DRIVER
LFLAGS = -mcpu=cortex-m0 -mthumb -mfloat-abi=soft -specs=nosys.specs -specs=nano.specs -Wl,--gc-sections
"arm-none-eabi-gcc.exe (GNU Tools for ARM Embedded Processors) 5.2.1 20151202 (release) [ARM/embedded-5-branch revision 231848]版权所有 (C) 2015自由软件基金会。这是免费软件;请查看源代码以了解复制条件。没有任何保证;甚至适用于特定目的的适销性或适用性。
首先,为什么它们被链接在一起?有没有方法可以排除它们?"
-nostdinc
编译并使用-nostdlib
链接吗? - Jean-François Fabre