linux系统:共享库问题之如version `ZLIB_1.2.9‘ not found

一、方法一:下载并软链接

1. 错误提示:

 /lib/aarch64-linux-gnu/libz.so.1: version `ZLIB_1.2.9' not found (required by /root/aarch64-xilinx-linux/usr/lib/libpng16.so.16)

 2. 解决方法

下载 zlib-1.2.9.tar.gz 官网http://www.zlib.net/fossils/ 到linux机器上,然后进入压缩包文件路径并执行以下命令:

(1)安装相关依赖环境

apt-get update

apt-get install build-essential

(2)解压编译zlib

tar -xvf zlib-1.2.9.tar.gz
cd zlib-1.2.9
sudo -s # 进入root用户
./configure
make
make install

(3)通过软连接将zlib连接到共享库路径:

 /lib/aarch64-linux-gnu/libz.so.1: version `ZLIB_1.2.9' not found (required by /root/aarch64-xilinx-linux/usr/lib/libpng16.so.16)

ln -s -f /usr/local/lib/libz.so.1.2.9  /lib/aarch64-linux-gnu/libz.so.1

软链接:

ln -s -f /usr/local/lib/libz.so.1.2.9  /lib/aarch64-linux-gnu/libz.so.1

二、方法二:搜索并软链接

示例:

 /lib/aarch64-linux-gnu/libstdc++.so.6: version `CXXABI_1.3.11' not found (required by /root/aarch64-xilinx-linux/usr/lib/libtbb.so.2)

注:这种错误一般是版本过低导致,置其没有达到要求版本CXXABI_1.3.11

1. 查看 /lib/aarch64-linux-gnu/libstdc++.so.6已存在的CXXABI版本

 strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep CXXABI

linux系统:共享库问题之如version `ZLIB_1.2.9‘ not found_第1张图片

 可见没有所要求的CXXABI_1.3.11

2. 查看libstdc++.so.6指向的具体版本

ll /usr/lib/aarch64-linux-gnu/libstdc++.so.6

可见其指向的是libstdc++.so.6.0.21

那么我们全局搜索到大于 6.0.21的libstdc++.so,可能就存在CXXABI_1.3.11

3. 全局搜索大于现存版本的库libstdc++.so,命令如下:

root@ubuntu:/mnt# find / -name "libstdc++.so.*"

linux系统:共享库问题之如version `ZLIB_1.2.9‘ not found_第2张图片

如上,尽量选现存的最大版本,本文选择6.0.24,记住该路径并将其拷贝至 /lib/aarch64-linux-gnu/

cp /root/aarch64-xilinx-linux/usr/lib/libstdc++.so.6.0.24 /lib/aarch64-linux-gnu/

4.  改变软链接指向

cd /lib/aarch64-linux-gnu/

sudo rm libstdc++.so.6

sudo ln -s libstdc++.so.6.0.26 libstdc++.so.6

5. 查看是否出现满足的版本 

strings /usr/lib/aarch64-linux-gnu/libstdc++.so.6 | grep CXXABI

linux系统:共享库问题之如version `ZLIB_1.2.9‘ not found_第3张图片

 可见,版本已经满足要求,如若仍不存在,说明本机存在的libstdc++.so现存最大版本仍较低,需要更高版本进行更新,此时可使用方法一,或者在另外的linux机器上拷贝更高版本至本机。

三、心得

在实际应用中,曾首先使用方法一配置,再使用方法二配置其他库,结果有时配置后方法一配置的相关库失效,故优先推荐使用方法二

你可能感兴趣的:(Linux系统,linux,共享库,软链接)