CentOS 64 bit kötü ELF yorumlayıcısı


183

CentOS 6 64bit sürümünü yeni yükledim, 64 bit makineye 32 bit uygulama yüklemeye çalışıyorum ve bu hatayı aldım:

/lib/ld-linux.so.2: bozuk ELF yorumlayıcısı: Böyle bir dosya veya dizin yok

Linux'ta yeniyim. Bunu nasıl çözerim?

Yanıtlar:


355

64 bit bir sistemdesiniz ve yüklü 32 bit kütüphane desteği yok.

32 bit yürütülebilir dosyalar için destek (taban çizgisi) desteği

(kurulumunuzda sudo kullanmıyorsanız aşağıdaki notu okuyun)

Fedora / Red Hat ailesindeki çoğu masaüstü Linux sistemi:

 pkcon install glibc.i686

Muhtemelen bazı masaüstü Debian / Ubuntu sistemleri ?:

pkcon install ia32-libs

Fedora veya daha yeni Red Hat, CentOS:

 sudo dnf install glibc.i686

Yaşlı RHEL, CentOS:

   sudo yum install glibc.i686

Daha da eski RHEL, CentOS:

  sudo yum install glibc.i386

Debian veya Ubuntu:

   sudo apt-get install ia32-libs

size ihtiyacınız olan (ilk, ana) kütüphaneyi almalısınız.

Bunu yaptıktan sonra, muhtemelen destek kütüphanelerine ihtiyacınız olacak

Yüklemesi gereken glibc.i686veya glibc.i386büyük olasılıkla diğer kitaplık bağımlılıklarına da rastlayacak olan herkes . İsteğe bağlı kitaplık sağlayan bir paketi tanımlamak için aşağıdakileri kullanabilirsiniz:

 ldd /usr/bin/YOURAPPHERE

eğer içinde olduğundan emin /usr/bindeğilsen geri çekilebilirsin

 ldd $(which YOURAPPNAME)

Çıktı şöyle görünecektir:

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

Eksik kütüphaneleri (örn libSM.so.6. Yukarıdaki çıktıda) kontrol edin ve her biri için bunu sağlayan paketi bulmanız gerekir.

Dağıtım ailesi başına paketi bulma komutları

Fedora / Red Hat Enterprise / CentOS:

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

veya eski RHEL / CentOS'ta:

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

veya Debian / Ubuntu'da:

önce, veritabanını yükleyin ve indirin apt-file

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

sonra ile ara

 apt-file find libSM.so.6

/usr/lib(Normal) durumda önek yolunu not edin ; nadiren, bazı kütüphaneler hala /libtarihsel nedenlerle yaşıyor … Tipik 64 bit sistemlerde, 32 bit kütüphaneler yaşıyor /usr/libve 64 bit kütüphaneler yaşıyor /usr/lib64.

(Debian / Ubuntu çok mimarili kütüphaneleri farklı şekilde organize eder.)

Eksik kütüphaneler için paketleri kurma

Yukarıdakiler size bir paket adı vermelidir, örneğin:

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

Bu örnekte paketin adıdır libSMve paketin 32 bit sürümünün adıdırlibSM.i686 .

Daha sonra pkconbir GUI kullanarak veya sudo dnf/yum/apt-getuygun şekilde kullanarak gerekli kitaplığı kapmak için paketi yükleyebilirsiniz . Örn pkcon install libSM.i686. Gerekirse sürümü tam olarak belirleyebilirsiniz. Örneğinsudo dnf install ibSM-1.2.0-2.fc15.i686 .

Bazı kütüphanelerin adlarından önce bir "çağ" belirleyicisi olacaktır; bu atlanabilir (meraklı aşağıdaki notları okuyabilir).

notlar

Uyarı

Kesinlikle karşılaştığınız sorun, RPM (sırasıyla DPkg / DSelect) veritabanınızın bozuk olduğunu veya çalıştırmaya çalıştığınız uygulamanın paket yöneticisi aracılığıyla yüklenmediğini gösterir. Linux'ta yeniyseniz, mümkünse paket yöneticiniz dışındaki kaynaklardan gelen yazılımları kullanmaktan kaçınmak isteyebilirsiniz ...

Kurulumunuzda "sudo" kullanmıyorsanız

tip

su -c

her gördüğünüzde sudo, örneğin,

su -c dnf install glibc.i686

Kütüphane isimlerinde dönem tasarımcısı hakkında

Addan önceki “çağ” tasarımcısı, temel RPM kitaplıklarının sürüm numaralarını işleme biçiminin bir ürünüdür; Örneğin

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

Burada, 2:atlanabilir; sadece pkcon install libpng.i686veya sudo dnf install libpng-1.2.46-1.fc16.i686. (Belirgin bir şeye işaret eder: bir noktada, libpngpaketin sürüm numarası geriye doğru yuvarlandı ve güncellemeler sırasında yeni sürümün "daha yeni" olarak kabul edileceğinden emin olmak için "çağ" ın artırılması gerekiyordu veya benzer bir şey oldu. .)


Çeşitli paket yöneticisi seçeneklerini daha ayrıntılı bir şekilde açıklamak ve kapsamak için güncellendi (Mart 2016)


iv şimdi libpam.so.0 alıyorum im yüklü: paylaşılan nesne dosyası açılamıyor
c11ada

7
Uygulamanız gerekli kitaplıkları listelemiyorsa, bunları avlamanız ve kendiniz yüklemeniz gerekir; eğer şanslıysanız, yum aracılığıyla kullanılabilir olacaklar. Kütüphaneleri listelemek için "ldd (ikili)" kullanabilirsiniz. Listelenen her kitaplık için "/lib/ld-linux.so.2 (0x4f8d9000)" veya "libc.so.6 => /lib/libc.so.6 (0x4f8fa000) gibi bir okuma değeri vermez ", deneyin: sudo yum paket adlarını bulmak için * / lib / libWHATEVER.so - sağlar ve sonra yüklemek için sudo yum PACKAGE.i686'yı yükleyin. (Sisteminize varsayılan olarak yükleneceği gibi x86_64 değil, i386 veya
i686'yı aldığınızdan

Bu cevap, 64 bit sisteminize taşımanız gereken 32 bit yazılımınız olduğunda bir nimettir.
froggythefrog

Bu, Oracle'ın jre 1.7'sini Fedora 20'ye yüklemek için çok yardımcı oldu. Glibc.i686'ya ek olarak libgcc.i686'yı da yüklemek zorunda kaldım.
John Schmitt

17

Yeni kurulan CentOS 6.4 64 bit makinede de aynı problemle karşılaştım. Tek bir yum komutu bunu ve benzer sorunların% 99'unu düzeltir:

yum groupinstall "Uyumluluk kütüphaneleri"

Bunu 'sudo' ile önekleyin veya hangisi sizin için en uygunsa kök olarak çalıştırın.


14

Genel olarak, böyle bir hata aldığınızda,

yum provides ld-linux.so.2

o zaman şöyle bir şey göreceksiniz:

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

ve sonra BRPocock'un yazdığı gibi aşağıdakileri çalıştırıyorsunuz (mantığın ne olduğunu merak ediyorsanız ...):

yum install glibc.i686

3

Deneyin

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

Umarım bu temizlenir.


0

Sadece BRPocock'a bir yorum eklemek istedim, ama yeterli ayrıcalığım yok.

Bu yüzden katkım, IBM Integration Bus paketinden IBM Integration Toolkit'i yüklemeye çalışan herkes için oldu.

/ Integration_Toolkit / IM_Linux klasöründen "Installation Manager" komutunu çalıştırmayı denediğinizde (çalıştırılacak dosya "install" olur) bu yayında gösterilen hatayı alırsınız.

Bu sorunu düzeltmek için bu IBM'in web sayfasında daha ayrıntılı talimatlar bulabilirsiniz: https://www-304.ibm.com/support/docview.wss?uid=swg21459143

Umarım bunu yüklemeye çalışan herkes için yardımcı olur.


0

sudo yum yüklemek fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc ++. so.6


0

Debian için sistemde en az bir derleyiciye ihtiyacınız var ( Debian Stretch ve Jessie 32-bit kütüphanelere göre ).

apt-get install -y gcc-multilibDebian: jessie tabanlı docker kapsayıcısında 32 bit yürütülebilir dosyayı çalıştırmak için yükledim .


lütfen cevabınızın önemli kısımlarını cevabınıza ekleyin
Ibo

0

Bunun .i686yerine OpenJDK 32 bit ( ) de yükleyebilirsiniz . Testime göre, kurulacak ve sorunsuz çalışacak.

sudo yum install java-1.8.0-openjdk.i686

Not:

Java-1.8.0-OpenJDK paketini içeren sadece Java Runtime Environment . Java programları geliştirmek istiyorsanız java-1.8.0-openjdk-devel paketini yükleyin .

Daha fazla ayrıntı için buraya bakın.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.