一:下载protobuf3软件包,目前的最新版本是3.17.3
https://github.com/protocolbuffers/protobuf/releases/tag/v3.17.3
以为项目里使用了python,所以下载的是python版本的protobuf:
https://github.com/protocolbuffers/protobuf/releases/download/v3.17.3/protobuf-python-3.17.3.tar.gz
二:执行安装
新版本不需要执行autogen.sh脚本,直接./configure就行
tar zvxf protobuf-python-3.17.3.tar.gz
cd protobuf-3.17.3
./configure –prefix=/usr/local/ #自定义安装路径,也可以不指定,使用默认路径
sudo make #要编译很久
sudo make check
sudo make install
到此步还没有安装完毕,在/etc/profile 或者用户目录 ~/.bash_profile
添加下面内容,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/
修改完profile文件后,需要重新退出ssh连接然后登陆才能生效。
检查路径是否生效:
echo $LIBRARY_PATH
三: 继续安装protobuf的python模块(如果不用python,可跳过这一步)
四:安装完成,验证Linux命令
#protoc –version
五:验证Python模块是否被正确安装
#python
>>>import google.protobuf
如果没有报错,说明安装正常。
六:安装pip的protobuf
由于我的服务器环境没有连接外网,不能通过在线安装pip包,需要手动下载,下载连接:https://pypi.org/project/protobuf/#files,根据自己的情况选择响应的版本,我的环境是centos7,python3.7,所以下载的是:protobuf-3.17.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl 这个版本。
下载完成后,直接执行pip install protobuf-3.17.3-cp37-cp37m-manylinux_2_5_x86_64.manylinux1_x86_64.whl即可。
Note:
error: package directory 'google/protobuf/compiler' does not exist
解决办法:在google/protobuf/下创建compiler文件夹
再次在protobuf文件夹下运行:python setup.py install
今天先写到这里,后面有时间再补充上在python3里使用protobuf2.5的修改方法。