我刚刚安装了CentOS 6的64位版本,现在想在这个64位机器上安装32位应用程序,但是出现了如下错误:
/lib/ld-linux.so.2: 坏的ELF解释器:没有那个文件或目录
我该如何解决这个问题?
我刚刚安装了CentOS 6的64位版本,现在想在这个64位机器上安装32位应用程序,但是出现了如下错误:
/lib/ld-linux.so.2: 坏的ELF解释器:没有那个文件或目录
我该如何解决这个问题?
您所使用的是64位系统,但未安装32位库支持。
(如果您的设置中不使用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
的任何人可能也会遇到其他库依赖性。为了确定提供任意库的软件包,您可以使用
ldd /usr/bin/YOURAPPHERE
如果您不确定它是否在 /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
),对于每个缺失的库,需要找到提供它的软件包。
Fedora/Red Hat Enterprise/CentOS:
dnf provides /usr/lib/libSM.so.6
或者,在旧版的RHEL/CentOS上:
yum provides /usr/lib/libSM.so.6
或者,在Debian/Ubuntu上:
首先,安装并下载 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
。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
。pkcon
在GUI中安装软件包以获取所需的库,或者根据情况使用sudo dnf/yum/apt-get
。例如:pkcon install libSM.i686
。如有必要,您可以完全指定版本。例如:sudo dnf install ibSM-1.2.0-2.fc15.i686
。su -c
每当您看到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”必须被增加以确保新版本会在更新期间被视为“较新”。或者发生了类似的事情。两次。)更新以更充分地澄清和涵盖各种软件包管理器选项(2016年3月)。我在一台新安装的CentOS 6.4 64位机器上遇到了同样的问题。一个简单的yum命令可以解决这个问题,也可以解决99%的类似问题:
yum groupinstall "Compatibility libraries"
您可以在命令前加上“sudo”或以root身份运行,以适应您的需要。
通常情况下,当你遇到这样的错误时,只需执行以下操作:
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
尝试
$ yum provides ld-linux.so.2
$ yum update
$ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
.i686
)。根据我的测试,它可以被安装并正常工作。sudo yum install java-1.8.0-openjdk.i686
有关更多详细信息,请参见此处。java-1.8.0-openjdk软件包仅包含Java运行时环境。如果您想开发Java程序,请安装java-1.8.0-openjdk-devel软件包。
我只是想在BRPocock中添加一条评论,但我没有足够的权限。
所以我的贡献是为了每个试图从IBM的Integration Bus捆绑包安装IBM Integration Toolkit的人。
当您尝试从文件夹/Integration_Toolkit/IM_Linux运行“Installation Manager”命令(要运行的文件是“install”)时,您会收到本帖子中显示的错误。
进一步解决此问题的说明可以在IBM的网页上找到: https://www-304.ibm.com/support/docview.wss?uid=swg21459143
希望这对任何试图安装该工具包的人有所帮助。
sudo yum安装fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
yum install redhat-lsb
解决了这个问题。我想要补充一下,对于Debian系统来说,至少需要有一个编译器(根据Debian Stretch and Jessie 32-bit libraries)。
我安装了apt-get install -y gcc-multilib
,以便在基于debian:jessie的docker容器中运行32位可执行文件。