

维护的一个项目要求进行信创改造,操作系统为 麒麟高级服务器操作系统V10(Halberd)。
# cat /etc/os-release
NAME="Kylin Linux Advanced Server"
VERSION="V10 (Halberd)"
ID="kylin"
VERSION_ID="V10"
PRETTY_NAME="Kylin Linux Advanced Server V10 (Halberd)"
ANSI_COLOR="0;31"安装其它软件都比较顺利,在迁移一个视频转换软件过程中报以下错误:
error while loading shared libraries: libva.so.1: cannot open shared object file: No such file or directory首先确认一下查看服务器上是否已经安装libva:
# ldconfig -p | grep libva.so
libva.so.2 (libc6,x86-64) => /usr/lib64/libva.so.2可以看到服务器已经安装了libva,只是版本不同,我们需要的是libva.so.1,已经安装的是libva.so.2。
做个软链看下能不能用,先看一下libva.so.2实际的文件是哪个:
# ll /usr/lib64/libva.so.2
lrwxrwxrwx 1 root root 16 3月 6 2021 /usr/lib64/libva.so.2 -> libva.so.2.500.0可以看到实际文件是 libva.so.2.500.0,我们将这个软链到 libva.so.1试一下:
# sudo ln -s /usr/lib64/libva.so.2.500.0 /usr/lib64/libva.so.1再次尝试运行软件,又报了以下错误:
error while loading shared libraries: libva-drm.so.1看来有戏,解决方法同上:
# ldconfig -p | grep libva-drm.so
libva-drm.so.2 (libc6,x86-64) => /usr/lib64/libva-drm.so.2
# sudo ln -s /usr/lib64/libva-drm.so.2 /usr/lib64/libva-drm.so.1再次尝试运行,问题解决。
这个问题比较简单,就是操作系统已经安装了高版本类库,但是软件还是请求低版本,用软链欺骗以一下就可以了。