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?
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)
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.
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
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.
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.
sudo yum install fontconfig freetype libfreetype.alors?6 libfontconfig.alors?1 libstdc++.alors?6
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.