Linux 下安装Google Protocol Buffers
1、系统版本信息查看
内核版本:uname -a || cat /proc/version
当前操作系统版本: cat /etc/issue || lsb_release -a || cat /etc/redhat-release
2、安装protoc编译器
在windows先已经提供了protobuf的编译器protoc.exe。Linux下因为不同的系统内核导致google不能提供相应的protoc工具。需要使用Gcc自定义安装。
运行
./configure
sudo make
sudo make check
sudo make install
默认安装在:
/usr/local/bin/protoc
/usr/local/lib/*.so
安装完成之后,运行 protoc --version
会出现异常:
protoc: error while loading shared libraries: libprotobuf.so.7: cannot open shared object file: No such file or directory
因为有些版本的linux不会将/usr/local/lib设置到 $LD_LIBRARY_PATH变量中。需要在root用户(或者 sudo) 下修改/etc/profile(或者 ~/.bashrc)文件,将/usr/local/lib设置到 $LD_LIBRARY_PATH变量中。
重新载入 source /etc/profile.
查看 env命令
之后使用普通用户运行portoc --version(注意:protoc 及相关的so文件执行权限应修改为777)
如果依然出现此问题,则再次进入root,运行ldconfig 更新LD_LIBRARY_PATH的缓存,即更新/etc/ld.so.cache。
退出root,再次运行protoc --version
或者:
sudo ./configure --prefix=/usr
如果不设置这个参数,protobuf的include 和 lib 会安装到/usr/local下去,导致protoc找不到依赖的.so库,需要重新设置环境变量。有了这个参数后就可以一步到位,比较方便。
3、linux生成protobuf-java-*.jar
3.1 配置linux下的maven环境。 注意:设置$M2_HOME和$PATH变量
3.2 进入protobuf文件夹,mvn package即可生成 protobuf-java-*.jar。注意src文件中protoc编译器的执行权限(同 /usr/local/bin/protoc)
参考:http://code.google.com/p/protobuf/issues/detail?id=213
进一步的使用:http://www.kangye.org/try-google-protocol-buffers