是否有可能在嵌入式ARM系统(STM32 F4)上开发一个使用protobuf-c 0.15的系统,并与使用protobuf的java服务器通信?
protobuf -c 0.15使用动态内存分配。并编译抛出错误:
/opt/arm/sourcery-arm-none-eabi-2011.09/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb2/libc.a(lib_a-abort.o): In function `abort':
abort.c:(.text+0xa): undefined reference to `_exit'
/opt/arm/sourcery-arm-none-eabi-2011.09/bin/../lib/gcc/arm-none-eabi/4.6.1/../../../../arm-none-eabi/lib/thumb2/libc.a(lib_a-sbrkr.o): In function `_sbrk_r':
sbrkr.c:(.text+0x12): undefined reference to `_sbrk'
...
我知道nanopb和protobuf-embedded-c。但他们对protobuf的支持有限。
答案 0 :(得分:5)
对_sbrk
的未定义引用来自newlib,即CodeSourcery附带的libc。您需要提供系统调用功能才能将其与系统正确连接。参见例如:
https://sites.google.com/site/stm32discovery/open-source-development-with-the-stm32-discovery/getting-newlib-to-work-with-stm32-and-code-sourcery-lite-eabi
(关于nanopb对protobuf的有限支持,我想更多地了解你需要什么功能。我是nanopb的作者。)