So aktivieren Sie die 32-Bit-Binärkompatibilität unter Linux Mint 11 x64

8

Ich habe kürzlich x64 Linux Mint 11 installiert, im Grunde Ubuntu Natty. Seit der Installation habe ich festgestellt, dass 32-Bit-Anwendungen, die früher auf meinem Ubuntu-System ausgeführt wurden, von meinem Mint 11-System abgelehnt werden. Wenn ich das Dienstprogramm 'file' verwende, um die Binärdatei zu überprüfen, wird sie korrekt als 32-Bit-Elfe identifiziert, aber ich kann die Anwendung nicht aufrufen.

Ich habe versucht, es von bash und os.system a la python aus zu starten, ohne Erfolg, daher vermute ich, dass es etwas mit dem 32-Bit-Binärkompatibilitätsmodus zu tun haben muss, aber mein Wissen über dieses Subsystem und wie man es aktiviert ist begrenzt, kann jemand helfen?

Vielen Dank

Gearoid Murphy
quelle
+1 danke fürs fragen. Ich bin gerade auch von Natty zu Mint gewechselt!
Alain Pannetier

Antworten:

5

Installieren Sie ia32-libs und stellen Sie sicher, dass die Anwendungsdatei als ausführbar markiert ist. Dies sollte den Job erledigen! :) :)

Späte Bearbeitung:

Die lib könnte möglicherweise ia32-libs-multiarch anstelle von ia32-libs heißen.
apt-get install ia32-libs-multiarch

Ruairi Fullam
quelle
Ausgezeichnet, das hat perfekt funktioniert, danke!. Ich bin mir ein wenig unsicher, warum es funktioniert hat? Selbst wenn ich vorher die Bibliotheken vermisst hätte, hätte ldd zumindest die erforderlichen gemeinsam genutzten Objektdateien aufgelistet. Vor der Installation von ia32-libs würde ldd einfach sagen, dass die Binärdatei keine dynamisch verknüpfte ausführbare Datei ist. Gibt es eine andere geheime Sauce, mit der die ia32-libs 32-Bit-Apps ausführen?
Gearoid Murphy
Ich bin mir nicht sicher, ob ich ehrlich bin, aber es hat bei mir funktioniert! :) (ps Markiere die Antwort, wenn es dir gefällt!). :)
Ruairi Fullam
Interessanterweise habe ich ia32-libs entfernt und die ausführbare Datei hat immer noch funktioniert (sie ist statisch verknüpft). Nach genauerer Betrachtung der Ausgabe von 'lsmod' kann ich sehen, dass es ein Modul namens "binfmt_misc" gibt. Darauf habe ich mich bezogen Ich bin mir ziemlich sicher, dass dies die Hauptvoraussetzung für die Unterstützung alternativer Binärformate wie 32-Bit- oder COFF-Exe von Windows ist.
Gearoid Murphy
2

Ich weiß nichts über MINT, aber ich habe einige Erfahrungen mit Debian: Um 32-Bit-Binärdateien auszuführen, benötigen Sie in fast jedem Fall die Bibliotheken, die 32-Bit-Binärdateien in einer 64-Bit-Umgebung unterstützen. Versuchen

apt-get install ia32-libs

Wenn es passend für Ihr System ist ... (oder versuchen Sie es mit Eignung oder was auch immer mit MINT geliefert wird)

Mit ldd können Sie überprüfen, welche Bibliotheken benötigt werden :

lofi:~# ldd /bin/ping
linux-vdso.so.1 =>  (0x00007ffff7dff000)
libc.so.6 => /lib/libc.so.6 (0x00007fd872ed1000)
/lib64/ld-linux-x86-64.so.2 (0x00007fd87323c000)

Wenn Bibliotheken fehlen, teilt Ihnen ldd dies mit.

trurl
quelle
Als ich ldd für die 32-Bit-Binärdatei verwendet habe, bevor ich ia32-libs installiert hatte, wurde ein Fehler zurückgegeben, der besagte, dass die Binärdatei keine dynamisch verknüpfte ausführbare Datei war. Ich weiß, dass ein Kernelmodul für die Verarbeitung verschiedener ausführbarer Formate erstellt wurde, und ich hatte damit gerechnet dass dies konfiguriert werden musste, um die 32-Bit-Binärkompatibilität zu ermöglichen.
Gearoid Murphy