Es stellt sich heraus (wie ich vermutete), dass Sie versucht haben, eine 32-Bit-ausführbare Datei auf einem 64-Bit-System auszuführen. Der 64-Bit-Linux-Kernel kann ausführbare 32-Bit-Dateien ausführen (deshalb erhalten Sie keinen "exec-Formatfehler"), aber er benötigt einen separaten Satz von (32-Bit-) Bibliotheken: Die 64-Bit-Version von libudev.so.0
ist nutzlos für ein 32-Bit-Programm. (Weitere Details zur Auflösung der gemeinsamen Bibliotheksabhängigkeit finden Sie unter ld.so manpage.)
Moderne Debian-basierte Distributionen unterstützen die gleichzeitige Installation von Bibliotheken für mehrere Architekturen. apt-get install libudev0:i386
sollte eine 32-Bit-Version der Bibliothek und all ihrer Abhängigkeiten erhalten (möglicherweise gibt es viele davon, wenn Sie zum ersten Mal eine 32-Bit-Anwendung verwenden). Wenn Sie von einer alten Installation aktualisiert, müssen Sie i386
auf Architekturen von dpkg
, wie diese unterstützt hinzuzufügen:
dpkg --add-architecture i386
Einige Ratschläge verwenden, wenn das Programm einige andere Bibliotheken benötigt auch:
- Verwenden Sie ldd, um alle Abhängigkeiten gleichzeitig zu sehen (und was fehlt)
- Installieren Sie apt-file und führen Sie
apt-file update
aus, damit Sie einen Paketnamen anhand eines Dateinamens nachschlagen können, auch wenn das Paket derzeit nicht installiert ist (wie hier) : apt-file search /libudev.so.0
) war
Es gibt auch eine alte Debian-Art 32-Bit-Bibliotheken auf einem 64-Bit-System zu bekommen: ia32-libs
Paket eine Reihe von Bibliotheken in amd64-Repositorys bereitgestellt wird, konzeptionell "könnte alles, was Ihre Anwendung benötigen". Verwenden Sie diesen Ansatz nicht, es sei denn, Sie Debian Squeeze oder früher (oder eine Debian-basierte Distribution des gleichen Alters). Selbst wenn es funktionierte, gab es keine Garantie, dass das Programm auch keine andere Bibliothek benötigt. Ia32-libs
war nützlich, wenn Multiarch-Unterstützung noch nicht fertig war, und das war vor einigen Jahren.
Ist Ihr 'exe' 32-Bit- oder 64-Bit? Probiere 'Datei my.exe' aus. Wenn es sich um eine ausführbare 32-Bit-Datei handelt, wird erwartet, dass keine 64-Bit-Bibliothek dafür verwendet wird (dann müssen Sie ein "Multiarch" -System einrichten und "libudev0: i386" mit allen seinen Abhängigkeiten installieren) –
file my.exe gibt: ELF 32-bit LSB ausführbare Datei, Intel 80386, Version 1 (SYSV), dynamisch verlinkt (benutzt shared libs), für GNU/Linux 2.6.24, BuildID [sha1] = 0xe561272b6fba244041101a89deb43b9cdf17fe3a, nicht entfernt, Es ist eine 32 bit exe, Ich werde installieren, was Sie gesagt haben und versuchen. – Raulp
Ja, das ist es. Wenn Ihr System noch nicht "Multiarch" ist (Sie wissen es, wenn das Paket 'libudev0: i386' nicht gefunden wird), müssen Sie es möglicherweise konfigurieren. Es ist mit 'dpkg --add-architecture i386' auf debian (dann' apt-get update') gemacht, aber es kann in Ubuntu anders sein. –