运行rhel6构建的可执行文件时,在rhel7计算机上导入错误

问题描述

我在rhel6上有我的c ++项目,并且工作正常。 但是在rhel7机器上,它会引发以下错误

ImportError:liblzma.so.0:无法打开共享对象文件:否这样 文件或目录

现在,我知道,在rhel7机器上,我们有:

$ ldconfig -p | grep "liblzma" 
    liblzma.so.5 (libc6,x86-64) => /lib64/liblzma.so.5
    liblzma.so.5 (libc6) => /lib/liblzma.so.5
    liblzma.so (libc6,x86-64) => /lib64/liblzma.so

在rhel6机器上,我们有:

$ ldconfig -p | grep liblzma
    liblzma.so.0 (libc6,x86-64) => /usr/lib64/liblzma.so.0
    liblzma.so (libc6,x86-64) => /usr/lib64/liblzma.so

如何纠正此错误? 由于rhel6构建可执行文件应该/可以在rhel7上工作。 (rhel6的任何更高版本)

解决方法

所需的库的较早版本(/usr/lib64/liblzma.so.0由软件包xz-compat-libs提供。很简单:

yum install xz-compat-libs
,

只需在RHEL7计算机上创建链接即可完成工作。

$ ln -s  /lib64/liblzma.so  liblzma.so.0

然后,您可以将创建链接的目录添加到环境变量“ LD_LIBRARY_PATH”中。这个env变量用于查找代码要使用的动态库。