GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Ist es möglich, 32-Bit-Bibliotheken auf einem 64-Bit-System zu installieren?

Ich habe die gemeinsam genutzten 32-Bit-Bibliotheken installiert, erhalte aber immer noch diesen Fehler, während ich versuche, pogoplug zu installieren:

./pogoplugfs: error while loading shared libraries: libfuse.so.2: wrong ELF class: ELFCLASS64

Muss ich noch etwas tun, damit das Programm aus den 32-Bit-Bibliotheken geladen wird?

Eine ähnliche Frage wurde Anfang dieses Jahres gestellt, aber es gab keine Antwort.

Akzeptierte Antwort:

Bei einigen Bibliotheken ist es möglich, sowohl die 32-Bit- als auch die 64-Bit-Bibliotheken auf einem 64-Bit-System zu installieren. Dies ist über die ia32-libs verfügbar Paket auf Ubuntu 10.04 und früher. Gemäß der Dateiliste von ia32-libs , gibt es kein libfuse.so.2 Datei enthalten. Das bedeutet, dass Sie nicht beide Architekturen gleichzeitig installiert haben können.

Seit Ubuntu 11.10 Oneiric ist es für Pakete möglich, eine gleichzeitige Installation für verschiedene Architekturen zu ermöglichen, was als „Multi-Arch“ bezeichnet wird. Leider, wenn ich der Dateiliste von libfuse2 glauben darf Auf Oneiric wurde dieses Paket noch nicht umgestellt. Das kann anhand der Paketabhängigkeiten ermittelt werden:ob ein Paket von multiarch-support abhängt (wie libdrm2) hat es Unterstützung für Multi-Arch-Unterstützung. Dies ist jedoch nicht der Fall eine Garantie, dass das Paket für mehrere Architekturen gleichzeitig installiert werden kann.

Um Ihren lokalen Cache nach den Multi-Arch-Fähigkeiten eines Pakets abzufragen, sagen Sie libc6 , ausführen:

apt-cache show libc6 | grep ^Multi-Arch:

Für diesen Befehl ist die Ausgabe Multi-Arch: same . Das bedeutet, dass sowohl die 32-Bit- als auch die 64-Bit-Version eines Pakets gleichzeitig installiert werden können. Wenn keine Ausgabe erfolgt, ist das Paket nicht bereit für die Unterstützung mehrerer Archs. Andere mögliche Werte sind foreign (nicht mitinstallierbar, aber es kann verwendet werden, um die Abhängigkeiten anderer Architekturen zu erfüllen) und allowed (iirc, es darf immer nur ein Paket installiert werden, aber das Paket kann verwendet werden, um Abhängigkeiten von anderen Paketen zu erfüllen)

Sie sollten in der Lage sein, 32-Bit-Pakete auf einem 64-Bit-System zu installieren mit:

sudo apt-get install packagename:i386

Erstellen einer 32-Bit-Libfuse für 64-Bit-Rechner

Da die 32-Bit-Sicherungsbibliothek nicht mit ia32-libs geliefert wird , haben Sie keine andere Wahl, als es selbst zu bauen.

  1. Installieren Sie die Build-Abhängigkeiten für Fuse und erhalten Sie den Quellcode:

    sudo apt-get install ia32-libs libc6-i386
    sudo apt-get build-dep fuse
    apt-get source fuse
    
  2. Konfigurieren Sie den Quellbaum und erstellen Sie eine Sicherung (passen Sie den Verzeichnisnamen an, falls erforderlich):

    cd fuse-2.8.4
    CFLAGS=-m32 ./configure --host=i386-linux-gnu
    make -j 50
    
  3. Installieren Sie die 32-Bit-Fuse-Bibliothek (passen Sie die Version entsprechend an):

    sudo ln -s libfuse.so.2.8.4 /usr/local/lib/libfuse.so.2
    sudo install -m644 lib/.libs/libfuse.so.2.8.4 /usr/local/lib/
    
  4. Aktualisieren Sie den Linker-Cache:

    sudo ldconfig
    
  5. (optional) Entfernen Sie die Quelldateien:

    cd ..
    rm -r fuse-2.8.4
    

Ubuntu
  1. Debian – Wie repliziert man installierte Paketauswahlen von einem Debian-System auf ein anderes? (Debian Wheezy)?

  2. Kann Ubuntu auf Systemen ohne Internetverbindung installiert werden?

  3. Wie installiere ich Termite?

  4. Kann nicht mehrere Entwicklungsbibliotheken installieren?

  5. Upgrade von 32-Bit auf 64-Bit??

So installieren Sie Minecraft unter Ubuntu 20.04

Installieren Sie Synaptic Package Manager unter Linux

So installieren Sie Django unter Ubuntu 20.04

So installieren Sie Notepadqq unter Ubuntu 20.04

Installieren Sie Redis auf Ubuntu 20.04

So installieren und verwalten Sie RPM-Pakete auf einem Ubuntu/Debian-System