CentOS 64 bits bad ELF interprète

je viens d'installer la version 64bit de CentOS 6, j'essaie d'installer une application 32 bits sur une machine 64 bits et j'ai eu cette erreur:

/lib/ld-linux..2: bad ELF interprète: Aucun fichier ou répertoire de

je suis nouveau sous linux. Comment puis-je résoudre ce problème?

162
demandé sur Matt Fenwick 2011-11-30 19:19:40

7 réponses

vous êtes sur un système 64 bits, et n'avez pas de support de bibliothèque 32 bits installé.

pour installer le support (baseline) pour les exécutables 32 bits

(si vous n'utilisez pas sudo dans votre configuration, lisez la note ci-dessous)

la plupart des systèmes Linux de bureau dans la famille Fedora / Red Hat:

 pkcon install glibc.i686

peut-être des systèmes Debian/Ubuntu de bureau?:

pkcon install ia32-libs

Fedora ou plus récent Rouge Chapeau, CentOS:

 sudo dnf install glibc.i686

older RHEL, CentOS:

   sudo yum install glibc.i686

encore plus vieux RHEL, CentOS:

  sudo yum install glibc.i386

Debian ou Ubuntu:

   sudo apt-get install ia32-libs

devrait vous saisir la bibliothèque (première, principale) dont vous avez besoin.

une fois que vous avez cela, vous aurez probablement besoin de soutien libs

toute personne ayant besoin d'installer glibc.i686 ou glibc.i386 rencontrera probablement d'autres dépendances de bibliothèque, aussi bien. Pour identifier un paquet fournissant une bibliothèque arbitraire, vous pouvez utiliser

 ldd /usr/bin/YOURAPPHERE

si vous n'êtes pas sûr que ce soit dans /usr/bin vous pouvez également vous replier sur

 ldd $(which YOURAPPNAME)

la sortie ressemblera à ceci:

    linux-gate.so.1 =>  (0xf7760000)
    libpthread.so.0 => /lib/libpthread.so.0 (0xf773e000)
    libSM.so.6 => not found

cherchez les bibliothèques manquantes (par exemple libSM.so.6 dans la sortie ci-dessus), et pour chacune vous devez trouver le paquet qui le fournit.

Commandes pour trouver le paquet par famille de distribution

Fedora / Red Hat Enterprise/ CentOS:

 dnf provides /usr/lib/libSM.so.6

ou, sur les anciens RHEL/CentOS:

 yum provides /usr/lib/libSM.so.6

ou, sur Debian / Ubuntu:

tout d'abord, installez et téléchargez la base de données pour apt-file

 sudo apt-get install apt-file && apt-file update

puis rechercher avec

 apt-file find libSM.so.6

noter le chemin de préfixe /usr/lib dans le (usual) cas; rarement, certaines bibliothèques vivent encore sous /lib pour des raisons historiques ... sur les systèmes 64 bits typiques, les bibliothèques 32 bits vivent dans /usr/lib et les bibliothèques 64 bits vivent dans /usr/lib64 .

(Debian/Ubuntu organisent les bibliothèques multi-architectures différemment.)

installer des paquets pour les bibliothèques manquantes

ce qui précède doit vous donner un nom de paquet, par exemple:

libSM-1.2.0-2.fc15.i686 : X.Org X11 SM runtime library
Repo        : fedora
Matched from:
Filename    : /usr/lib/libSM.so.6

In cet exemple, le nom du paquet est libSM et le nom de la version 32 bits du paquet est libSM.i686 .

vous pouvez ensuite installer le paquet pour saisir la bibliothèque requise en utilisant pkcon dans une interface graphique, ou sudo dnf/yum/apt-get comme approprié.... E. g pkcon install libSM.i686 . Si nécessaire, vous pouvez spécifier la version entièrement. E. g sudo dnf install ibSM-1.2.0-2.fc15.i686 .

certaines bibliothèques auront un indicateur" époque " avant leur nom; ce peut être omis (le curieux peut lire les notes ci-dessous).

Notes

Avertissement

incidemment, le problème auquel vous faites face implique que votre RPM (resp. DPkg / DSelect) est corrompue, ou que l'application que vous essayez d'exécuter n'a pas été installée par le gestionnaire de paquets. Si vous êtes nouveau sous Linux, vous voudrez probablement éviter d'utiliser des logiciels provenant d'autres sources que votre gestionnaire de paquets, dans la mesure du possible...

si vous n'utilisez pas" sudo "dans votre configuration

Type

su -c

chaque fois que vous voyez sudo , par exemple,

su -c dnf install glibc.i686

à Propos de l'époque de désignation dans les noms de bibliothèque

l'indicatif "époque" précédant le nom est un artefact de la façon dont les bibliothèques RPM sous-jacentes gèrent les numéros de version; p.ex.

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

ici, le 2: peut être omis; juste pkcon install libpng.i686 ou sudo dnf install libpng-1.2.46-1.fc16.i686 . (Cela implique vaguement quelque chose du genre: à un moment donné, le numéro de version du paquet libpng a été inversé, et l ' "époque" a dû être incrémenté pour s'assurer que la nouvelle version serait considérée comme "nouvelle" pendant les mises à jour. Ou quelque chose de similaire est arrivé. À deux reprises.)


mise à jour de pour clarifier et couvrir les différentes options de gestionnaire de paquets plus fully (mars, 2016)

333
répondu BRPocock 2018-07-18 21:53:22

vient de rencontrer le même problème sur une machine CentOS 6.4 64 bits fraîchement installée. Une seule commande yum corrigera ceci plus 99% de problèmes similaires:

yum groupinstall "les bibliothèques de Compatibilité"

soit le préfixe avec 'sudo', soit l'exécution en root, selon ce qui vous convient le mieux.

17
répondu Phil Edwards 2013-11-03 23:03:49

en général, quand vous obtenez une erreur comme celle-ci, faites juste

yum provides ld-linux.so.2

alors vous verrez quelque chose comme:

glibc-2.20-5.fc21.i686 : The GNU libc libraries
Repo        : fedora
Matched from:
Provides    : ld-linux.so.2

et puis vous exécutez ce qui suit comme BRPocock a écrit (au cas où vous vous demandiez quelle était la logique...):

yum install glibc.i686
10
répondu Moe Singh 2015-01-18 22:57:43

Essayer

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

J'espère que ça s'éclaircira.

3
répondu The Bumpaster 2017-05-16 07:24:49

voulait juste ajouter un commentaire dans BRPocock, mais je n'ai pas les privilèges suffisants.

donc ma contribution était pour tout le monde essayant d'installer IBM Integration Toolkit à partir de IBM Integration Bus bundle.

lorsque vous essayez d'exécuter la commande" Gestionnaire D'Installation "à partir de folder /Integration_Toolkit/IM_Linux (le fichier à exécuter est" install"), vous obtenez l'erreur affichée dans ce post.

autres instructions pour corriger ce problème vous trouverez dans cette page Web D'IBM: https://www-304.ibm.com/support/docview.wss?uid=swg21459143

J'espère que cela aidera quiconque essaie de l'installer.

0
répondu mmarquezvacas 2014-12-03 19:21:39

sudo yum install fontconfig freetype libfreetype.alors?6 libfontconfig.alors?1 libstdc++.alors?6

0
répondu nithin 2016-05-17 09:22:56

j'ajouterais Pour Debian que vous avez besoin d'au moins un compilateur dans le système (selon Debian Stretch et Jessie 32-bit libraries ).

j'ai installé apt-get install -y gcc-multilib afin d'exécuter un fichier exécutable de 32 bits dans mon conteneur docker basé sur debian:jessie.

0
répondu Vitaliy 2017-10-24 00:19:58