CentOS 64位错误的ELF解释器
我刚刚安装了CentOS 6 64位版本,我试图在64位机器上安装一个32位应用程序,并得到这个错误:
/lib/ld-linux.so.2:错误的ELF解释器:没有这样的文件或目录
我是新来的Linux。 我如何解决这个问题?
您位于64位系统上,并且没有安装32位库支持。
为32位可执行文件安装(基准)支持
Fedora / Red Hat系列中的大多数桌面Linux系统:
pkcon install glibc.i686
可能是一些桌面Debian / Ubuntu系统?
pkcon install ia32-libs
Fedora或更新的红帽,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
应该抓住你需要的(第一,主)库。
警告
从本质上讲,这可能意味着您的RPM(或DPkg / DSelect)数据库已损坏,或者您尝试运行的应用程序未通过软件包pipe理器安装。 如果您是Linux新手,您可能希望尽可能避免使用软件包pipe理器以外的软件,
如果你没有在你的设置中使用“sudo”
types
su -c
每当你看到sudo
,例如,
su -c dnf install glibc.i686
一旦你有了,你可能需要支持库
任何需要安装glibc.i686
或glibc.i386
都可能会遇到其他库依赖关系。 要识别提供任意库的软件包,可以使用
ldd /usr/bin/YOURAPPHERE
如果你不确定它在/usr/bin
你也可以重新使用它
ldd $(which YOURAPPNAME)
查看缺less的库的输出,并为每个输出它的名称(例如对于libSM.so.6 => missing
您将使用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
然后search
apt-file find libSM.so.6
注意(通常)情况下的前缀path/usr/lib
; 由于历史原因,一些库仍然存在于/lib
下。在典型的64位系统上,32位库位于/usr/lib
而64位库位于/usr/lib64
。
(Debian / Ubuntu以不同的方式组织多种架构库。)
这应该给你一个包名称,例如:
libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library Repo : fedora Matched from: Filename : /usr/lib/libSM.so.6
然后您可以pkcon install libSM.i686
(或完全指定版本: sudo dnf install ibSM-1.2.0-2.fc15.i686
)来获取必要的库。 (在GUI中使用pkcon
,或者根据需要使用sudo dnf/yum/apt-get
…)
一些图书馆名称前会有一个“时代”标志; 这可以省略,这是底层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
软件包的版本号向后滚动,并且必须增加“时代”以确保更新版本在更新期间被认为是“更新的”,或者类似的事情发生了。两次。)
更新以更全面地阐明和涵盖各种软件包pipe理器选项(2016年3月)
在新安装的CentOS 6.4 64位机器上遇到同样的问题。 一个单一的yum命令将解决这个问题,加上99%的类似问题:
yum groupinstall“兼容性库”
或者用“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
希望这清除。
sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc ++。so.6
只是想在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
希望这有助于任何人试图安装。
我将为Debian添加至less一个系统编译器(根据Debian Stretch和Jessie 32位库 )。
我安装了apt-get install -y gcc-multilib
,以便在基于debian:jessie的docker容器中运行32位可执行文件。
- 我应该使用Python 32位还是Python 64位?
- 如何使Android的aapt和adb在没有ia32-libs的64位Ubuntu上工作(适用于版本12,13和14)
- 在Visual Studio中构build时,有条件地使用32/64位参考
- 如何强制Python在Snow Leopard和其他32位/ 64位问题上是32位的
- 如何以编程方式确定特定进程是32位还是64位
- 使用CMake强制进行32位编译的正确方法
- Microsoft.Jet.OLEDB.4.0“提供程序未在本地计算机上注册
- 在构造System.Data.SQLite.SQLiteConnection时,什么原因导致System.BadImageFormatException