我正在尝试使用stm32l1处理器为我的自定义平台创建contiki端口。但是,当我试图从arm-none-eabi-gcc
newlib覆盖默认的printf函数时,它不会让我。
我尝试过创建hedaer和源文件,添加它们来构建,然后创建函数' printf'和' sprintf'在他们中或命名他们不同的东西,然后尝试使用
#define printf my_printf
。
我还跟踪了我在网上找到的其他提示,告诉我创建一个提供各种功能_sbrk , _write , _read...
的newlib存根文件等等。
但是每当我尝试使用任何printf命令构建我的程序时,链接器就会抱怨所有带有未定义引用的newlib存根文件。
undefined reference to _sbrk
如何让contiki构建系统覆盖标准的printf函数?
在ubuntu14:10上使用gcc 4.93。
CC targets/r1501/printf/printf-stdarg.c
CC contiki/../arm/stm32l152/./syscalls.c
CC ....
CC contiki/core/net/mac/cxmac/cxmac.c
AR contiki-r1501.a
CC project.c
LD project.r1501
/usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-sbrkr.o): In function
_ sbrk_r&#39 ;:
sbrkr.c :(。text._sbrk_r + 0xc):对_sbrk'
/usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-writer.o): In function
_ write_r'的未定义引用:
writer.c :(。text._write_r + 0x10):未定义对_write'
/usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/lib/thumb/libg.a(lib_a-closer.o): In function
的引用_ close_r':
....更多来自libg.a的错误
在syscalls.c文件中指定了所有这些未定义的引用。 printf和sprintf在printf-sdarg.c中定义。
arm-none-eabi-gcc -DCONTIKI = 1 -DCONTIKI_TARGET_R1501 = 1 -DNETSTACK_CONF_WITH_IPV6 = 1 -DUIP_CONF_IPV6_RPL = 1 -DAUTOSTART_ENABLE -DHSE_VALUE = 8000000 -DF_CPU = 32000000 -DPLL_SOURCE_HSE -D' GIT_DESC =" v0.1-23-g0c3a4d8-dirty"' -specs = nosys.specs -I。 -Icontiki / core -Icontiki /../ arm / stm32l152 -Icontiki /../ arm / stm32l152 / loader -Icontiki /../ arm / stm32l152 / lib / STM32L1xx_StdPeriph_Driver / inc -Icontiki /../ arm / stm32l152 / lib / CMSIS / Include -Icontiki /../ arm / stm32l152 -Icontiki / platform / r1501 -DWITH_ASCII -DMCK = 32000000 -mlittle-endian -mthumb -mcpu = cortex-m3 -msoft-float -Wno-strict-aliasing -DRUN_AS_SYSTEM - DROM_RUN -std = c99 -g -lc -larchive -Lcontiki /../ arm / stm32l152 -fdiagnostics-color = always -O0 -I。 -Itargets / r1501 /。 -Itargets / r1501 / dev -Itargets / r1501 / rf230bb -Itargets / r1501 / printf -Icontiki /../ arm / stm32l152 /。 -Icontiki /../ arm / stm32l152 / lib / STM32L1xx_StdPeriph_Driver / src -Icontiki / core / dev -Icontiki / core / lib -Icontiki / core / net -Icontiki / core / net / llsec -Icontiki / core / net / mac - Icontiki / core / net / rime -Icontiki / core / net / rpl -Icontiki / core / sys -Icontiki / core / cfs -Icontiki / core / ctk -Icontiki / core / lib / ctk -Icontiki / core / loader -Icontiki /核心/。 -Icontiki / apps / ping6 -Icontiki / core / sys -Icontiki / core / dev -Icontiki / core / lib -Icontiki / core / net / ipv6 -Icontiki / core / net / ip -Icontiki / core / net / rpl -Icontiki / core / net / mac -Icontiki / core / net / llsec -Icontiki / core / net / mac / sicslowmac -Icontiki / core / net / rime -Icontiki / core / net -Icontiki / core / net / mac / contikimac -Icontiki / core / net / mac / cxmac -Itargets / r1501 / -Icontiki -DCONTIKI_VERSION_STRING = \" Contiki-2.6-2077-ga79edc6 \" -DAUTOSTART_ENABLE -c project.c -o project.co arm-none-eabi-gcc -L contiki /../ arm / stm32l152 -T contiki /../ arm / stm32l152 / stm32l1xx.ld -g -nostartfiles -mthumb -fdiagnostics-color = always project.co obj_r1501 / contiki-main.o \ contiki-r1501.a -o project.r1501 /usr/bin/../lib/gcc/arm-none-eabi/4.9.3/../../../../arm-none-eabi/ lib / thumb / libg.a(lib_a-sbrkr.o):在函数`_sbrk_r':