我刚刚安装了CentOS 6 64位版本,我正在尝试在64位计算机上安装32位应用程序并出现此错误:
/lib/ld-linux.so.2:错误的ELF解释器:没有这样的文件或目录
我是linux的新手.我该如何解决这个问题?
您使用的是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
.
(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
在这个例子中,包的名称是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
.
有些图书馆在他们的名字之前会有一个"划时代"的指示符; 这可以省略(好奇的人可以阅读下面的注释).
在本质上,您遇到的问题或者意味着您的RPM(分别为DPkg/DSelect)数据库已损坏,或者您尝试运行的应用程序未通过软件包管理器安装.如果您是Linux的新手,您可能希望尽可能避免使用除包管理器以外的其他来源的软件...
类型
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"兼容性库"
可以使用"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