这个问题真的是遇到好多次解决起来都不顺利的。
首先说明libprotobuf.so.10 是protobuf3.0.0版本的。
这个问题应该分成两个方面:
1. 系统存在libprotobuf.so.10 但是运行程序的时候找不到
2. 系统没有libprotobuf.so.10,需要重新编译安装
针对第一个问题,很可能是在安装protobuf的时候没有指定安装路径,从而找不到。
protobuf的默认安装路径是/usr/local/lib,而/usr/local/lib 不在Ubuntu体系默认的 LD_LIBRARY_PATH 里,所以就找不到该lib。
解决方法:
1.创建文件touch /etc/ld.so.conf.d/libprotobuf.conf
2. 将 /usr/local/lib 路径写入libprotobuf.conf
3. sudo ldconfig 更新一下
4.再运行protoc –version 就可以正常看到版本号了
或者命令行输入:LD_LIBRARY_PATH=/usr/local/lib:$LD_LIBRARY_PATH 暂时解决问题
针对第二个问题就要安装protobuf了。
github官网GitHub - protocolbuffers/protobuf at v3.0.0
因为我要的是3.0.0版本的,大家各取所需。
这里要注意不要用git clone,可能有问下clone 不下来,如gooletest。
直接下载并解压即可。
这里还需要下载gmock,不然会报错
git clone https://github.com/paulsapps/gmock-1.7.0
把gmock解压出来的目录拷贝到protobuf目录下,改名为gmock
cd protobuf
vim aotogen.sh将如下代码注释:
if test ! -e gmock; then
echo "Google Mock not present. Fetching gmock-1.7.0 from the web..."
curl -O https://googlemock.googlecode.com/files/gmock-1.7.0.zip
unzip -q gmock-1.7.0.zip
rm gmock-1.7.0.zip
mv gmock-1.7.0 gmock
fi
分别执行一下命令:
./autogen.sh
./configure
make
make check
make install
注意make 的时候如果遇到这个问题先不管,继续执行下去:
make[2]: Leaving directory '/home/chanyeol/Downloads/protobuf-master'
.....
以上命令全部执行完后就回到第一步:
创建文件 /etc/ld.so.conf.d/libprotobuf.conf 包含内容:/usr/local/lib
sudo ldconfig
再运行protoc --version 就可以正常看到版本号了