2013-01-06 61 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