这是一个交叉编译问题。
我创建了xxxx.proto并使用protobuf-c项目生成了C代码。在x86 linux上编译成功。
但是当我为MIPS交叉编译它时,它出现了编译错误。我使用buildroot编译了protobuf,protobuf-c。而工具链就是魔法工具。
源代码如下所示。
#include <string.h>
#include "egmessage.pb-c.h" //header file that protobuf-c generated. I never touched it.
int main (void)
{
printf("Hello, world.");
return 0;
}我尝试使用下面的命令编译这段代码。
mips-linux-gnu-gcc egmessage.pb-c.c test.c -o extest -I/home/vagrant/tools/buildroot-2014.11/output/staging/usr/include -lprotobuf-c然后我得到编译错误,如下所示。
In file included from test.c:6:0:
egmessage.pb-c.h:20:1: error: expected '=', ',', ';', 'asm' or '__attribute__' b
efore 'typedef'
typedef struct _ControlMessage ControlMessage;
^
egmessage.pb-c.h:35:23: error: unknown type name 'ControlMessage'
(ControlMessage *message);
^
egmessage.pb-c.h:37:22: error: unknown type name 'ControlMessage'
(const ControlMessage *message);
^
egmessage.pb-c.h:39:22: error: unknown type name 'ControlMessage'
(const ControlMessage *message,
^
egmessage.pb-c.h:42:22: error: unknown type name 'ControlMessage'
(const ControlMessage *message,
^
egmessage.pb-c.h:44:1: error: unknown type name 'ControlMessage'
ControlMessage *
^
egmessage.pb-c.h:50:23: error: unknown type name 'ControlMessage'
(ControlMessage *message,
^
egmessage.pb-c.h:54:18: error: unknown type name 'ControlMessage'
(const ControlMessage *message,
^
test.c:8:1: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'int'
int main (void)
^错误消息说它要使用几个符号。你有过这样的经历吗?
发布于 2015-01-15 18:19:35
我找到原因了。我使用了我手动编译的协议。该版本与buildroot的protobuf版本不同。我应用了buildroot的protobuf并重新编译了proto文件。然后它就成功了。
https://stackoverflow.com/questions/27940874
复制相似问题