编译Arm版本的Google的Protobuf-C

在arm上安装和使用Google的Protobuf-C

步骤如下

一、安装PC版本的ProtoBuf的相关文件和可执行程序

1、获取[Protobuf源码](https://github.com/google/protobuf)
2、编译宿主机版本Protobuf软件,因为Protoc-C依赖Protobuf的库文件和头文件
1)下载完源码后,执行./autogen.sh
2)生成一个configure可执行程序
3)执行./configure --prefix=/usr/local/protobuf没有错误输出,生成Makefile文件
4)然后执行make && sudo make install 会生成的可执行程序、头文件、lib库在默认的路径下面/usr/local/protobuf
5)可执行程序protoc用于将规则序列化文件.pro生成源代码供使用者使用
6)PC版本的测试程序[protobuf.tar.gz](/_attachment/2018-08-10/protobuf.tar.gz)(无法上传附件)

2、安装PC版本的Protobuf-C文件

1、下载[Protobuf-C源码](https://github.com/protobuf-c/protobuf-c.git)
2、编译PC版本的Protobuf-c文件
1)执行./autogen.sh
2)执行./configure的时候会出现(configure: error: required protobuf header file not found)这个错误,需要导入刚才编译好的protobu的生成文件的配置文件pkgconfig的路径信息。解决办法:export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig, 然后在执行./configure,即可生成Makefile文件
3)执行make && sudo make install 就可以生成protoc-c、头文件、库文件(路径/usr/local/),其中protoc-c用于将.pro文件生成.c .h文件,供应用使用。
4)pc上的例子[example.tar.gz](/_attachment/2018-08-10/example.tar.gz)(无法上传附件)

3、编译arm版本的库文件和头文件

1、arm版本不需要protoc-c程序,因为生成代码和编译在PC上编译,板子上只是运行应用程序。
2、同一份protoc-c代码,然后make clean一下
3、导入arm版本的gcc编译器的环境变量
4、配置编译信息 ./configure --host=arm-linux-gnueabihf CC=arm-linux-gnueabihf-gcc CXX=arm-linux-gnueabihf-g++ --disable-protoc --prefix=`pwd`/build/protobuf-c-arm,其中相关的arm-xxx是你arm编译器的相关名字,--prefix配置的是你生成文件的路径。
5、make && make install 即可在你指定的文件夹中看到生成的文件,如我的生成文件。    
![2018-08-10_111229.png](https://upload-images.jianshu.io/upload_images/7311855-edd526bfa847c2c3.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

至此arm版本、PC版本的Protobuf-c已经移植完成,验证需使用者自己验证,本人在PC上验证没问题,arm版本的只需修改一下CMakeLists文件里面的部分即可。

你可能感兴趣的:(编译Arm版本的Google的Protobuf-C)