我刚刚安装了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
应该 grab 你需要的(第一个,主要的)库 .
任何需要安装 glibc.i686 或 glibc.i386 的人都可能会遇到其他库依赖项 . 要识别提供任意库的包,您可以使用
glibc.i686
glibc.i386
ldd /usr/bin/YOURAPPHERE
如果你 /usr/bin 在 /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 / Red Hat Enterprise / 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 .
/usr/lib
/lib
/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 和 the name of the 32bit version of the package is libSM.i686 .
libSM
然后,您可以安装程序包以在GUI中使用 pkcon 获取必需的库,或者根据需要使用 sudo dnf/yum/apt-get . 例如 pkcon install libSM.i686 . 如有必要,您可以完全指定版本 . 例如 sudo dnf install ibSM-1.2.0-2.fc15.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
更新以更全面地阐明和涵盖各种包裹管理器选项(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
希望这清除 .
只想在BRPocock中添加评论,但我没有足够的特权 .
所以我的贡献是每个尝试从IBM的Integration Bus软件包安装IBM Integration Toolkit的人 .
当您尝试从文件夹/ Integration_Toolkit / IM_Linux(要运行的文件是“安装”)运行“Installation Manager”命令时,您会收到此帖子中显示的错误 .
有关解决此问题的进一步说明'll find in this IBM'的网页:https://www-304.ibm.com/support/docview.wss?uid=swg21459143
希望这对任何试图安装它的人都有帮助 .
sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc .so.6
我想为Debian添加你需要在系统中至少有一个编译器(根据Debian Stretch and Jessie 32-bit libraries) .
我安装了 apt-get install -y gcc-multilib ,以便在我的docker容器中运行基于debian:jessie的32位可执行文件 .
apt-get install -y gcc-multilib
您也可以安装OpenJDK 32位( .i686 ) . 根据我的测试,它将被安装和工作没有问题 .
.i686
sudo yum install java-1.8.0-openjdk.i686
注意:
java-1.8.0-openjdk包只包含Java Runtime Environment . 如果要开发Java程序,请安装java-1.8.0-openjdk-devel软件包 .
有关详细信息,请参阅here .
8 回答
您使用的是64位系统,并且未安装32位库支持 .
为32位可执行文件安装(基线)支持
(如果您在下面的设置中没有使用sudo,请阅读下面的注释)
Fedora / Red Hat系列中的大多数桌面Linux系统:
可能是一些桌面Debian / Ubuntu系统?:
Fedora或更新的Red Hat,CentOS:
较老的RHEL,CentOS:
甚至更老的RHEL,CentOS:
Debian或Ubuntu:
应该 grab 你需要的(第一个,主要的)库 .
一旦你有了,你可能需要支持库
任何需要安装
glibc.i686
或glibc.i386
的人都可能会遇到其他库依赖项 . 要识别提供任意库的包,您可以使用如果你
/usr/bin
在/usr/bin
你也可以依靠输出将如下所示:
检查缺少的库(例如上面输出中的
libSM.so.6
),并且对于每个库,您需要找到提供它的包 .用于查找每个分发系列的包的命令
Fedora / Red Hat Enterprise / CentOS:
或者,在较旧的RHEL / CentOS上:
或者,在Debian / Ubuntu上:
首先,安装并下载数据库
apt-file
然后搜索
注意(通常)情况下的前缀路径
/usr/lib
;由于历史原因,很少有一些图书馆依然存在于/lib
之间......在典型的64位系统中,32位图书馆位于/usr/lib
,而64位图书馆位于/usr/lib64
.(Debian / Ubuntu以不同方式组织多架构库 . )
安装缺少库的包
上面应该给你一个包名,例如:
在此示例中,包的名称是
libSM
和 the name of the 32bit version of the package is 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”必须递增以确保更新期间更新版本被认为是“更新” . 或类似的事情发生 . 两次 . )更新以更全面地阐明和涵盖各种包裹管理器选项(2016年3月)
刚刚在新安装的CentOS 6.4 64位机器上遇到了同样的问题 . 单个yum命令将修复此问题以及99%的类似问题:
yum groupinstall“兼容性库”
可以使用“sudo”作为前缀,也可以以root身份运行,以最适合您的方式运行 .
一般来说,当你收到这样的错误时,就这样做
然后你会看到类似的东西:
然后你就像BRPocock写的那样运行以下内容(如果你想知道逻辑是什么......):
尝试
希望这清除 .
只想在BRPocock中添加评论,但我没有足够的特权 .
所以我的贡献是每个尝试从IBM的Integration Bus软件包安装IBM Integration Toolkit的人 .
当您尝试从文件夹/ Integration_Toolkit / IM_Linux(要运行的文件是“安装”)运行“Installation Manager”命令时,您会收到此帖子中显示的错误 .
有关解决此问题的进一步说明'll find in this IBM'的网页:https://www-304.ibm.com/support/docview.wss?uid=swg21459143
希望这对任何试图安装它的人都有帮助 .
sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc .so.6
我想为Debian添加你需要在系统中至少有一个编译器(根据Debian Stretch and Jessie 32-bit libraries) .
我安装了
apt-get install -y gcc-multilib
,以便在我的docker容器中运行基于debian:jessie的32位可执行文件 .您也可以安装OpenJDK 32位(
.i686
) . 根据我的测试,它将被安装和工作没有问题 .注意:
有关详细信息,请参阅here .