Ich habe ein Spiel heruntergeladen (Shank), aber die Bin-Datei läuft nicht. Der Fehler, der angezeigt wird, wenn ich versuche, die ausführbare Datei zu starten, ist:
bash: ./shank-linux-120720110-1-bin: No such file or directory
64-bit
files
games
executable
Francesco
quelle
quelle
Antworten:
Sie versuchen wahrscheinlich, eine 32-Bit-Binärdatei auf einem 64-Bit-System auszuführen, auf dem keine 32-Bit-Unterstützung installiert ist.
Es gibt drei Fälle, in denen die Meldung "Keine solche Datei oder kein solches Verzeichnis" angezeigt wird:
file shank-linux-120720110-1-bin
zeigt beispielsweise so etwas wie "ELF 32-Bit-LSB-ausführbare Datei ..." an). Wenn Sie jedoch versuchen, sie auszuführen, wird Ihnen mitgeteilt, dass die Datei nicht vorhanden ist.Die Fehlermeldung in diesem letzten Fall ist zugegebenermaßen verwirrend. Ihnen wird gesagt, dass eine Schlüsselkomponente der Laufzeitumgebung, die zum Ausführen des Programms erforderlich ist, fehlt. Leider hat der Kanal, über den der Fehler gemeldet wird, nur Platz für den Fehlercode und nicht für diese zusätzliche Information, dass es wirklich die Laufzeitumgebung ist, die schuld ist. Wenn Sie die technische Version dieser Erklärung benötigen, lesen Sie die Meldung "Nicht gefunden", wenn Sie eine 32-Bit-Binärdatei auf einem 64-Bit-System ausführen .
Der
file
Befehl sagt Ihnen genau, was diese Binärdatei ist. Mit wenigen Ausnahmen können Sie nur eine Binärdatei für die Prozessorarchitektur ausführen, für die Ihre Ubuntu-Version vorgesehen ist. Die Hauptausnahme ist, dass Sie 32-Bit-Binärdateien (x86, auch bekannt als IA32) auf 64-Bit-Systemen (amd64, auch bekannt als x86_64) ausführen können.In Ubuntu bis 11.04 müssen Sie das
ia32-libs
Paket installieren , um eine 32-Bit-Binärdatei in einer 64-Bit-Installation auszuführen . Möglicherweise müssen Sie zusätzliche Bibliotheken installieren (in diesem Fall wird eine explizite Fehlermeldung angezeigt).Seit 11.10 (oneiric) können Sie Multiarch- Unterstützung installieren
ia32-libs
, aber Sie können einen differenzierteren Ansatz wählen, der ausreicht, um (plus jede andere erforderliche Bibliothek) zu erhalten.libc6-i386
quelle
ldd
überprüfen, ob eine Bibliothek fehlt.ldd kgio_ext.so
könntelibruby.so.2.3 => not found
unter anderem so etwas sagenbash: ...some...path...: No such file or directory
Folgendes zeigen kann: Nach dem Verschieben der ausführbaren Datei. Bash scheint Pfade zu ausführbaren Dateien in $ PATH zwischenzuspeichern; rennhash -r
um es zu klären. Siehe: unix.stackexchange.com/a/5610/1135264-Bit-Ubuntu-Multiarch-Systeme
Folgen Sie dieser Antwort nur, wenn die Ausgabe von
file file-name
zeigt,Um 32 - Bit ausführbare Datei in einem 64 - Bit Multi-Arch Ubuntu - System läuft, müssen Sie hinzufügen ,
i386
Architektur und auch müssen Sie installierenlibc6:i386
,libncurses5:i386
,libstdc++6:i386
diese drei Bibliothekspakete.quelle
libselinux1:i386
Als ich das Deb für 32-Bit installierte, wurde mir klar, dass ich einige Bibliotheken (zusätzlich zu ia32-libs und libc6) vermisse. Ich habe dieses Problem zuerst gelöst, indem ich den folgenden Befehl gab:
Dann habe ich noch einen Fehler bekommen:
Offensichtlich wurden diese Bibliotheken ordnungsgemäß installiert. Ohne ins Detail zu gehen, musste ich die Bibliotheken von Hand verknüpfen. Mir wurde dann klar, dass sich durch Synaptic auch folgende Pakete leichter installieren lassen:
Danach war das nächste Problem der schwarze Bildschirm während des Spielens, den ich löste, indem ich die ausführbare Datei in / Shank / bin durch Folgendes ersetzte: http://treefort.icculus.org/smb/smb-linux-mesa-hotfix-test.tar .bz2 .
Ich hoffe, es wird jemandem nützlich sein. Wenn Sie weitere Hilfe oder Details benötigen, können Sie mich gerne kontaktieren.
quelle
Hier ist eine Abschrift, die ein bisschen mehr über die Art des Problems und wie es ab Ubuntu 16.04 behoben werden kann. Beachten Sie, dass, obwohl
file
Berichte "dynamisch verknüpft" sind,ldd
Berichte "keine dynamische ausführbare Datei" sind.Sobald Sie libc6: i386 installiert haben, verbessern sich die Dinge ...
Um den Auftrag abzuschließen, müssen Sie möglicherweise nacheinander weitere Bibliotheken identifizieren und installieren ...
Ich weiß nicht, ob es eine systematische Möglichkeit gibt, die richtigen zu installierenden Bibliotheken zu identifizieren. Es gibt ein paar Vermutungen, wie die Fehlermeldungen den Paketnamen zugeordnet werden können (das Ausfüllen von Registerkarten hilft).
quelle
ldd
(Falsch) meldet "keine dynamische ausführbare Datei".Um die Antwort von @Gilles zu erweitern, gibt es mindestens drei Szenarien, die zu diesem Fehler führen:
file
Befehl funktioniert), was zu einer rätselhaften Fehlermeldung führt. Dies kann bedeuten, dass ein Problem mit dem Lader vorliegt.Kategorien von Laderproblemen:
Der Loader einer ausführbaren Datei existiert nicht. Sie können dies mit dem Befehl file überprüfen, um festzustellen, ob der Loader vorhanden ist. Z.B
Hinweis
interpreter /lib64/ld-lsb-x86-64.so.3
; Wenn diese Datei nicht vorhanden ist, müssen Sie sie installieren. Für diesen speziellen Loader am 16.04 stellte sich heraus, dass die Antwort lautetesudo apt-get install lsb
.Probleme mit dem Ladeprogramm eines Skripts (siehe diese Antwort ).
ldd <file-name>
diese Option, um nach nicht gefundenen Bibliotheken zu suchen. Weitere Informationen finden Sie in dieser Antwort .Der nicht vorhandene Loader kann auf einen 32/64-Bit-Konflikt oder einen anderen Grund zurückzuführen sein. Möglicherweise gibt es andere Arten von Loader-Fehlern, die ich nicht kenne.
quelle
file lmutil
habe ich den Interpreter nicht gezeigt, habe es aberldd
getan, und die Installation hatlsb
das Problem gelöst.