首页 文章

CentOS 64位错误的ELF解释器

提问于
浏览
166

我刚刚安装了CentOS 6 64位版本,我正在尝试在64位计算机上安装32位应用程序并出现此错误:

/lib/ld-linux.so.2:错误的ELF解释器:没有这样的文件或目录

我是linux的新手 . 我该如何解决这个问题?

8 回答

  • 336

    您使用的是64位系统,并且未安装32位库支持 .

    为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.i686glibc.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 ),并且对于每个库,您需要找到提供它的包 .

    用于查找每个分发系列的包的命令

    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
    

    在此示例中,包的名称是 libSMthe 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”

    类型

    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.i686sudo dnf install libpng-1.2.46-1.fc16.i686 . (它含糊地暗示:在某些时候, libpng 包的版本号向后滚动,并且“epoch”必须递增以确保更新期间更新版本被认为是“更新” . 或类似的事情发生 . 两次 . )


    更新以更全面地阐明和涵盖各种包裹管理器选项(2016年3月)

  • 0

    刚刚在新安装的CentOS 6.4 64位机器上遇到了同样的问题 . 单个yum命令将修复此问题以及99%的类似问题:

    yum groupinstall“兼容性库”

    可以使用“sudo”作为前缀,也可以以root身份运行,以最适合您的方式运行 .

  • 0

    一般来说,当你收到这样的错误时,就这样做

    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
    
  • 17

    尝试

    $ yum provides ld-linux.so.2
    $ yum update
    $ yum install glibc.i686 libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
    

    希望这清除 .

  • 11

    只想在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

    希望这对任何试图安装它的人都有帮助 .

  • 3

    sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc .so.6

  • 0

    我想为Debian添加你需要在系统中至少有一个编译器(根据Debian Stretch and Jessie 32-bit libraries) .

    我安装了 apt-get install -y gcc-multilib ,以便在我的docker容器中运行基于debian:jessie的32位可执行文件 .

  • 0

    您也可以安装OpenJDK 32位( .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 .

相关问题