Linux 加载.so库出错

linux下运行程序时,提示加载共享库出错:

error while loading shared libraries: libQt5SerialBus.so.5: cannot open shared object file: No such file or directory

此时需要将编译环境下的 libQt5SerialBus.so.5找到,

sudo find -name libQt5SerialBus*

找到对应文件的路径,但发现此文件其实是个链接文件

root:/# ls -l /usr/lib/libQt5SerialBus*
lrwxrwxrwx 1 root root     34 Mar 30 12:00 /usr/lib/libQt5SerialBus.so.5 -> /usr/lib/libQt5SerialBus.so.5.14.2
lrwxrwxrwx 1 root root     34 Mar 30 12:00 /usr/lib/libQt5SerialBus.so.5.14 -> /usr/lib/libQt5SerialBus.so.5.14.2
-rwxr-xr-x 1 root root 315616 Mar 30 11:47 /usr/lib/libQt5SerialBus.so.5.14.2

libQt5SerialBus.so.5 指向libQt5SerialBus.so.5.14.2 那么只需要将libQt5SerialBus.so.5.14.2 拷贝到linux的lib下,一般为/lib或/usr/lib,这个需要具体查看环境变量里添加的路径。

之后指定软链接即可。

ln -s <目标文件> <源文件>

注意,这里必须使用绝对地址,例如:

ln -s /usr/lib/libQt5SerialBus.so.5.14.2 /usr/lib/libQt5SerialBus.so.5

如果还有其他的库缺少,可以使用 ldd 查看都需要什么库 例如:

root:/#ldd TestApp
	linux-vdso.so.1 (0x0000ffff812f0000)
	libQt5Widgets.so.5 => /usr/lib/libQt5Widgets.so.5 (0x0000ffff80c20000)
	libQt5Gui.so.5 => /usr/lib/libQt5Gui.so.5 (0x0000ffff805f0000)
	libQt5Network.so.5 => /usr/lib/libQt5Network.so.5 (0x0000ffff80410000)
	libQt5SerialPort.so.5 => /usr/lib/libQt5SerialPort.so.5 (0x0000ffff803e0000)
	libQt5SerialBus.so.5 => not found
	libQt5Core.so.5 => /usr/lib/libQt5Core.so.5 (0x0000ffff7fe50000)
	libGLESv2.so.2 => /usr/lib/libGLESv2.so.2 (0x0000ffff7fe30000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x0000ffff7fe00000)
	libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x0000ffff7fbf0000)
	libm.so.6 => /lib/libm.so.6 (0x0000ffff7fb40000)
	libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x0000ffff7fb10000)
	libc.so.6 => /lib/libc.so.6 (0x0000ffff7f9a0000)
	libpng16.so.16 => /usr/lib/libpng16.so.16 (0x0000ffff7f950000)
	libz.so.1 => /lib/libz.so.1 (0x0000ffff7f920000)
	libdl.so.2 => /lib/libdl.so.2 (0x0000ffff7f900000)
	libudev.so.1 => /lib/libudev.so.1 (0x0000ffff7f8c0000)
	libicui18n.so.66 => /usr/lib/libicui18n.so.66 (0x0000ffff7f5e0000)
	libicuuc.so.66 => /usr/lib/libicuuc.so.66 (0x0000ffff7f3f0000)
	libpcre2-16.so.0 => /usr/lib/libpcre2-16.so.0 (0x0000ffff7f390000)
	libglapi.so.0 => /usr/lib/libglapi.so.0 (0x0000ffff7f310000)
	/lib/ld-linux-aarch64.so.1 (0x0000ffff81300000)
	librt.so.1 => /lib/librt.so.1 (0x0000ffff7f2f0000)
	libicudata.so.66 => /usr/lib/libicudata.so.66 (0x0000ffff7d820000)

其中 not found表示缺少的库。

在最后库添加成功后,运行程序还是提示
error while loading shared libraries: libQt5SerialBus.so.5: cannot open shared object file: No such file or directory

只需要执行下面命令即可:

ldconfig

最后,程序可以运行!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值