解决问题:error while loading shared libraries: libbz2.so.1: cannot open shared object file: No such file or directory
问题背景
作者在Ubuntu18.04系统上在线安装QT5.151,当运行./qt-unified-linux-x64-4.2.0-online.run的时候报错。
提示缺少动态库文件libbz2.so.1,如下所示:
./qt-unified-linux-x64-4.2.0-online.run
./qt-unified-linux-x64-4.2.0-online.run: error while loading shared libraries: libbz2.so.1: cannot open shared object file: No such file or directory
按照网上的说法,尝试着安装软件包apt-get install libbz2-dev,但是问题没有解决。
sudo apt-get install libbz2-dev
解决方法
在网上查找资料,有博主对类似问题提出建议:从其他地方拷贝文件就能解决问题。
尝试以下方法,问题解决了。
首先,看看运行安装文件qt-unified-linux-x64-4.2.0-online.run,需要哪些依赖库。
运行ldd命令:
$ ldd ./qt-unified-linux-x64-4.2.0-online.run
linux-vdso.so.1 (0x00007ffe891f9000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fbc10c7a000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fbc10a5d000)
libbz2.so.1 => not found
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fbc10837000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007fbc105f2000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007fbc1033e000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fbc100f1000)
libxcb-glx.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-glx.so.0 (0x00007fbc0fed6000)
libX11-xcb.so.1 => /usr/lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007fbc0fcd4000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fbc0faac000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007fbc0f8a2000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fbc0f690000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fbc0f358000)
libm.so.6 => /lib64/libm.so.6 (0x00007fbc0efda000)
libxkbcommon-x11.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon-x11.so.0 (0x00007fbc0edd2000)
libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007fbc0eb93000)
librt.so.1 => /lib64/librt.so.1 (0x00007fbc0e98b000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fbc0e76c000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fbc0e568000)
libGL.so.1 => /usr/lib/x86_64-linux-gnu/libGL.so.1 (0x00007fbc0e2dc000)
libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fbc0df53000)
libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fbc0dd3b000)
libc.so.6 => /lib64/libc.so.6 (0x00007fbc0d985000)
/lib64/ld-linux-x86-64.so.2 (0x00007fbc10e7d000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007fbc0d753000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007fbc0d521000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007fbc0d29d000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fbc0d099000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fbc0ce93000)
libxcb-xkb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb-xkb.so.1 (0x00007fbc0cc77000)
libGLX.so.0 => /usr/lib/x86_64-linux-gnu/libGLX.so.0 (0x00007fbc0ca46000)
libGLdispatch.so.0 => /usr/lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007fbc0c790000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fbc0c574000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fbc0c258000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007fbc0c043000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fbc0be2e000)
可以发现,
- libbz2.so.1 => not found。缺少这个文件。
- 这些关联的依赖库文件是存放在/lib/x86_64-linux-gnu/或者/lib64/目录里的。那么,是不是可以将libbz2.so.1复制到这些目录中呢?
用find命令查找libbz2.so.1文件:
sudo find / -name 'libbz2*' -ls
1186166 68 -rw-r--r-- 1 root root 66728 7月 4 2019 /lib/x86_64-linux-gnu/libbz2.so.1.0.4
1186165 0 lrwxrwxrwx 1 root root 15 12月 12 14:42 /lib/x86_64-linux-gnu/libbz2.so.1.0 -> libbz2.so.1.0.4
1186164 0 lrwxrwxrwx 1 root root 15 12月 12 14:42 /lib/x86_64-linux-gnu/libbz2.so.1 -> libbz2.so.1.0.4
可以发现,/lib/x86_64-linux-gnu/目录中有链接文件libbz2.so.1和动态库文件libbz2.so.1.0.4。
把这两个文件拷贝到/lib64/目录中,就可以运行安装文件./qt-unified-linux-x64-4.2.0-online.run了。
cd
sudo cp /lib/x86_64-linux-gnu/libbz2.so.1 /lib64/
sudo cp /lib/x86_64-linux-gnu/libbz2.so.1.0.4 /lib64/
./qt-unified-linux-x64-4.2.0-online.run
问题成功解决!