我刚刚安装了CentOS 6 64位版本,我试图在64位机器上安装32位应用程序,并得到了这个错误:/lib/ld-linux.so.2中的一个或多个命令行文件中的一个或多个。错误的ELF解释器:没有这样的文件或目录我是linux新手。我该如何解决这个问题?
hec6srdp1#
您使用的是64位系统,并且没有安装32位库支持。
(if您在设置中没有使用sudo(请阅读下面注解)Fedora/Red Hat系列中的大多数桌面Linux系统:
pkcon install glibc.i686
可能是一些桌面Debian/Ubuntu系统?:
pkcon install ia32-libs
Fedora或更高版本的Red Hat、CentOS:
sudo dnf install glibc.i686
较旧的RHEL、CentOS:
sudo yum install glibc.i686
甚至更老的RHEL、CentOS:
sudo yum install glibc.i386
Debian或Ubuntu:
sudo apt-get install ia32-libs
应该会为您获取所需的(第一个、主)库。
任何需要安装glibc.i686或glibc.i386的人都可能会遇到其他库依赖项。
glibc.i686
glibc.i386
ldd /usr/bin/YOURAPPHERE
如果您不确定它是否在/usr/bin中,您还可以使用
/usr/bin
ldd $(which YOURAPPNAME)
输出如下所示:
linux-gate.so.1 => (0xf7760000) libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000) libSM.so.6 => not found
检查缺少的库(例如上面输出中的libSM.so.6),对于每个库,您需要找到提供它的包。
libSM.so.6
Fedora/红帽企业版/CentOS:
dnf provides /usr/lib/libSM.so.6
或者,在较早的RHEL/CentOS上:
yum provides /usr/lib/libSM.so.6
或者,在Debian/Ubuntu上:首先,安装并下载apt-file的数据库
apt-file
sudo apt-get install apt-file && apt-file update
然后搜索
apt-file find libSM.so.6
注意在(通常)情况下的前缀路径/usr/lib;由于历史原因,很少有一些库仍然在/lib下运行......在典型的64位系统上,32位库在/usr/lib下运行,64位库在/usr/lib64下运行。(Debian/Ubuntu以不同方式组织多架构库。)
/usr/lib
/lib
/usr/lib64
上面应该会给你一个软件包名称,例如:
libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library Repo : fedora Matched from: Filename : /usr/lib/libSM.so.6
在此示例中,软件包的名称为libSM,32位版本的软件包的名称为libSM.i686。然后,您可以在GUI中使用pkcon或sudo dnf/yum/apt-get(如pkcon install libSM.i686)安装该软件包以获取必需的库。如果需要,您可以指定完整的版本。如sudo dnf install ibSM-1.2.0-2.fc15.i686。一些库在其名称前将具有“纪元”指示符;这可以省略(好奇的人可以阅读下面的注解)。
libSM
libSM.i686
pkcon
sudo dnf/yum/apt-get
pkcon install libSM.i686
sudo dnf install ibSM-1.2.0-2.fc15.i686
您所面临的问题可能暗示您的RPM(或DPkg/DSelect)数据库已损毁,或是您尝试执行的应用程序不是透过套件管理员安装的。如果您是Linux新手,您可能希望尽可能避免使用套件管理员以外来源的软件...
型号
su -c
每次你看到sudo,例如,
sudo
su -c dnf install glibc.i686
名称前面的“epoch”指示符是基础RPM库处理版本号的方式的产物;例如:
2:libpng-1.2.46-1.fc16.i686 : A library of functions for manipulating PNG image format files Repo : fedora Matched from: Filename : /usr/lib/libpng.so.3
这里,2:可以省略;只是pkcon install libpng.i686或sudo dnf install libpng-1.2.46-1.fc16.i686。(它模糊地暗示类似于:在某个时候,libpng包的版本号向后滚,“epoch”必须递增,以确保较新的版本在更新过程中被认为是“较新的”。或者类似的事情发生了两次。)
2:
pkcon install libpng.i686
sudo dnf install libpng-1.2.46-1.fc16.i686
libpng
zrfyljdw2#
刚刚在一台新安装的CentOS 6.4 64位机器上遇到了同样的问题。一个yum命令就可以修复这个问题以及99%的类似问题:yum groupinstall“兼容性库”您可以使用'sudo'作为前缀或以root用户身份运行,选择最适合您的方式。
y1aodyip3#
一般来说,当您遇到这样的错误时,只需
yum provides ld-linux.so.2
然后您将看到类似以下内容:
glibc-2.20-5.fc21.i686 : The GNU libc libraries Repo : fedora Matched from: Provides : ld-linux.so.2
然后你就像BRPocock写的那样运行下面的代码(如果你想知道逻辑是什么的话...):
yum install glibc.i686
fsi0uk1n4#
尝试
$ yum provides ld-linux.so.2 $ yum update $ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
希望这里能清理干净。
ws51t4hk5#
你也可以安装OpenJDK 32位(.i686)来代替,根据我的测试,它会安装并工作,没有问题。
.i686
sudo yum install java-1.8.0-openjdk.i686
注意事项:
java-1.8.0-openjdk软件包仅包含 * Java运行时环境 *。如果要开发Java程序,请安装java-1.8.0-openjdk-devel软件包。
有关详细信息,请参阅here。
rbpvctlc6#
只是想在BRPocock中添加一条评论,但我没有足够的特权。因此,我的贡献是为每个尝试从IBM的Integration Bus包安装IBM Integration Toolkit的人。当您尝试运行“安装管理器”命令从文件夹/Integration_Toolkit/IM_Linux(要运行的文件是“安装”),你得到的错误显示在这篇文章中。有关解决此问题的详细说明,请参阅IBM的以下网页:https://www-304.ibm.com/support/docview.wss?uid=swg21459143希望这对任何试图安装它的人有帮助。
sulc1iza7#
如果您有任何问题,请在这里输入您的密码。
lsmd5eda8#
我想补充的是,对于Debian,系统中至少需要一个编译器(根据Debian Stretch and Jessie 32-bit libraries)。我安装apt-get install -y gcc-multilib是为了在我的基于debian:jessie的docker容器中运行32位的可执行文件。
apt-get install -y gcc-multilib
jjjwad0x9#
在我的例子中,我使用命令yum install redhat-lsb解决了这个问题
yum install redhat-lsb
9条答案
按热度按时间hec6srdp1#
您使用的是64位系统,并且没有安装32位库支持。
安装32位可执行文件的(基准)支持
(if您在设置中没有使用sudo(请阅读下面注解)
Fedora/Red Hat系列中的大多数桌面Linux系统:
可能是一些桌面Debian/Ubuntu系统?:
Fedora或更高版本的Red Hat、CentOS:
较旧的RHEL、CentOS:
甚至更老的RHEL、CentOS:
Debian或Ubuntu:
应该会为您获取所需的(第一个、主)库。
一旦有了这些,您可能需要支持库
任何需要安装
glibc.i686
或glibc.i386
的人都可能会遇到其他库依赖项。如果您不确定它是否在
/usr/bin
中,您还可以使用输出如下所示:
检查缺少的库(例如上面输出中的
libSM.so.6
),对于每个库,您需要找到提供它的包。用于查找每个分发系列的软件包的命令
Fedora/红帽企业版/CentOS:
或者,在较早的RHEL/CentOS上:
或者,在Debian/Ubuntu上:
首先,安装并下载
apt-file
的数据库然后搜索
注意在(通常)情况下的前缀路径
/usr/lib
;由于历史原因,很少有一些库仍然在/lib
下运行......在典型的64位系统上,32位库在/usr/lib
下运行,64位库在/usr/lib64
下运行。(Debian/Ubuntu以不同方式组织多架构库。)
为缺少的库安装软件包
上面应该会给你一个软件包名称,例如:
在此示例中,软件包的名称为
libSM
,32位版本的软件包的名称为libSM.i686
。然后,您可以在GUI中使用
pkcon
或sudo dnf/yum/apt-get
(如pkcon install libSM.i686
)安装该软件包以获取必需的库。如果需要,您可以指定完整的版本。如sudo dnf install ibSM-1.2.0-2.fc15.i686
。一些库在其名称前将具有“纪元”指示符;这可以省略(好奇的人可以阅读下面的注解)。
备注
警告
您所面临的问题可能暗示您的RPM(或DPkg/DSelect)数据库已损毁,或是您尝试执行的应用程序不是透过套件管理员安装的。如果您是Linux新手,您可能希望尽可能避免使用套件管理员以外来源的软件...
如果在设置中不使用“sudo”
型号
每次你看到
sudo
,例如,关于库名中的纪元指示符
名称前面的“epoch”指示符是基础RPM库处理版本号的方式的产物;例如:
这里,
2:
可以省略;只是pkcon install libpng.i686
或sudo dnf install libpng-1.2.46-1.fc16.i686
。(它模糊地暗示类似于:在某个时候,libpng
包的版本号向后滚,“epoch”必须递增,以确保较新的版本在更新过程中被认为是“较新的”。或者类似的事情发生了两次。)zrfyljdw2#
刚刚在一台新安装的CentOS 6.4 64位机器上遇到了同样的问题。一个yum命令就可以修复这个问题以及99%的类似问题:
yum groupinstall“兼容性库”
您可以使用'sudo'作为前缀或以root用户身份运行,选择最适合您的方式。
y1aodyip3#
一般来说,当您遇到这样的错误时,只需
然后您将看到类似以下内容:
然后你就像BRPocock写的那样运行下面的代码(如果你想知道逻辑是什么的话...):
fsi0uk1n4#
尝试
希望这里能清理干净。
ws51t4hk5#
你也可以安装OpenJDK 32位(
.i686
)来代替,根据我的测试,它会安装并工作,没有问题。注意事项:
java-1.8.0-openjdk软件包仅包含 * Java运行时环境 *。如果要开发Java程序,请安装java-1.8.0-openjdk-devel软件包。
有关详细信息,请参阅here。
rbpvctlc6#
只是想在BRPocock中添加一条评论,但我没有足够的特权。
因此,我的贡献是为每个尝试从IBM的Integration Bus包安装IBM Integration Toolkit的人。
当您尝试运行“安装管理器”命令从文件夹/Integration_Toolkit/IM_Linux(要运行的文件是“安装”),你得到的错误显示在这篇文章中。
有关解决此问题的详细说明,请参阅IBM的以下网页:https://www-304.ibm.com/support/docview.wss?uid=swg21459143
希望这对任何试图安装它的人有帮助。
sulc1iza7#
如果您有任何问题,请在这里输入您的密码。
lsmd5eda8#
我想补充的是,对于Debian,系统中至少需要一个编译器(根据Debian Stretch and Jessie 32-bit libraries)。
我安装
apt-get install -y gcc-multilib
是为了在我的基于debian:jessie的docker容器中运行32位的可执行文件。jjjwad0x9#
在我的例子中,我使用命令
yum install redhat-lsb
解决了这个问题