protobuf安装与生成c++文件
protobuf源码网站:protobuf linux版本。
选择合适的版本进行下载。
说明:
protobuf已经全面迁移到github,地址:https://github.com/google/protobuf
直接下载2.6.1版本:https://github.com/google/protobuf/archive/v2.6.1.zip
转linux不久对linux的各种路径变量不是特别熟悉,网上看了几个教程都没有提到添加 LIBRARY_PATH路径,导致自定义安装路径的时候链接失败,自己写一篇安装教程,也算作加深印象吧,希望对大家有所帮助。
解压: tar -zvf protobuf-*.tar.gz 进入到protobuf目录: cd protobuf 指定安装目录 ./configure --prefix=/usr/local/protobuf 编译 :make。 测试 : make check。 安装 : make install。
设置环境变量 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib export PATH=$PATH:/usr/local/protobuf/bin 检查版本号 protoc --version 将protobuf文件转为c++文件 protoc proto文件路径 --cpp_out=C++代码文件导出目录
默认安装: $wget https://github.com/google/protobuf/archive/v2.6.1.zip $unzip protobuf-2.6.1.zip $cd protobuf-2.6.1123 下载自github的代码需要首先执行 $ ./autogen.sh 生成configure文件 注意autogen.sh 需要gtest包,默认是从 googletest.googlecode.com下载,国内需要翻墙才能访问,很多人问autogen.sh运行失败,这里我补充一下 修改一下autogen.sh 将这段: echo "Google Test not present. Fetching gtest-1.5.0 from the web..." curl http://googletest.googlecode.com/files/gtest-1.5.0.tar.bz2 | tar jx mv gtest-1.5.0 gtest123 修改为: wget https://github.com/google/googletest/archive/release-1.5.0.tar.gz tar xzvf release-1.5.0.tar.gz mv googletest-release-1.5.0 gtest 再执行 autogen.sh,这样就不会报错了 $ ./configure $ make $ make check $ make install 我使用的是centos系统 /usr/local/bin /usr/local/lib, /usr/local/include 是也系统默认路径之一,所以到这一步就可以使用protobuf了 $ protoc -I=./ --cpp_out=./ test.proto 到你的test.proto文件所在目录使用命令protoc -I=./ --cpp_out=./ 生成C++版本的协议文件 一切OK的话,你回在当前目录看到.h和.cc文件12345678910111213
自定义安装路径: protobuf默认安装在 /usr/local 目录 你可以修改安装目录通过 ./configure --prefix=命令 虽然我是root用户但觉得默认安装过于分散,所以统一安装在/usr/local/protobuf下 $./configure --prefix=/usr/local/protobuf $ make $ make check $ make install 到此步还没有安装完毕,在/etc/profile 或者用户目录 ~/.bash_profile 添加下面内容 ####### add protobuf lib path ######## #(动态库搜索路径) 程序加载运行期间查找动态链接库时指定除了系统默认路径之外的其他路径 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/protobuf/lib/ #(静态库搜索路径) 程序编译期间查找动态链接库时指定查找共享库的路径 export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/protobuf/lib/ #执行程序搜索路径 export PATH=$PATH:/usr/local/protobuf/bin/ #c程序头文件搜索路径 export C_INCLUDE_PATH=$C_INCLUDE_PATH:/usr/local/protobuf/include/ #c++程序头文件搜索路径 export CPLUS_INCLUDE_PATH=$CPLUS_INCLUDE_PATH:/usr/local/protobuf/include/ #pkg-config 路径 export PKG_CONFIG_PATH=/usr/local/protobuf/lib/pkgconfig/ ######################################
好了,goog luck
编译如果出现找不到符号和链接错误请记得加上链接选项 -lprotobuf 并确认你的静态库路径是否生效
$ echo $LIBRARY_PATH
卸载 which protoc rm /usr/local/bin/protoc
支持C https://github.com/protobuf-c/protobuf-c/ https://github.com/protobuf-c/protobuf-c/wiki/Examples