2013-01-06 59 views
2

是否可以开发一个在嵌入式ARM系统(STM32 F4)上使用protobuf-c 0.15并与使用protobuf?在嵌入式ARM系统(STM32 F4)上使用protobuf-c 0.15

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' 
... 

我知道关于nanob和protobuf-embedded-c。但他们的支持protobuf有限。

+1

看来你需要链接反对libc。或者如果libc不支持malloc,那么你不能使用它。 – 2013-01-06 16:14:10

+0

什么java protobuf库你使用的任何机会?据我所知,Google的RPC层没有指定“wire”协议,所以任何C到Java通信都需要一个兼容的java和c库。 – pjklauser

回答

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的作者。)

+0

感谢您的回复。 我们使用纳米粒子的主要问题: 我们已经有了一个使用反射的完善的协议。 Stm32设备 - 这是另一个客户端,必须支持它。整个难题是关于我们所拥有的信息的所有信息都在信息本身。 – Aleksandr

+1

@ K.G.V。好。我曾考虑反射支持是否可以用于纳米粒子。如果你愿意,随时提交一个功能请求,并包含你想要使用的.proto类型的例子。 – jpa