E build: ImportError: libprotobuf.so.10: cannot open shared object file: No such file or directory

沃驰
2023-12-01

这个问题真的是遇到好多次解决起来都不顺利的。

首先说明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 就可以正常看到版本号了

 类似资料: