Ich versuche die Firmware für meine linksys WRVS4400N zu kompilieren.
ls
zeigt, dass es existiert, aber wenn es versucht, es auszuführen, sagt bash, dass es nicht existiert. Ich kann cat
es auch, und es ist eine ausführbare Datei, kein Shell-Skript.
bash
arch-linux
Avery3R
quelle
quelle
Antworten:
Sie haben erwähnt, dass die Ausgabe von
file mkdep
ist32-bit elf
. Sie verwenden eine 64-Bit-VM.Beispiel:
Erstellen Sie einfach eine neue 32-Bit-VM und kompilieren Sie sie dort.
quelle
Ist es auf ausführbar eingestellt? Wenn nicht, dann
chmod +x filename
. Ist es in deinem Pfad? Wenn nicht, dann nenne es./filename
eher als nurfilename
.quelle
Wenn Sie versuchen, eine Datei auszuführen und bash sagt, dass sie nicht existiert, bedeutet dies manchmal, dass bash glaubt, dass die Datei ein Skript ist und dass der in der ersten Zeile (#!) Angegebene Interpreter nicht existiert.
Wenn die Dateien benannt sind,
mkdep
würde ich die Ausgabe von postenDer Befehl strace gibt Informationen zu durchgeführten Systemaufrufen
strace ls 2>ls.t
an und fügt beispielsweise Folgendes in ls.t einquelle
strace ./mkdep 2>mkdep.strace.txt
dies sollte Ihnen eine Vorstellung davon geben, was los ist. Möglicherweise müssen Sie strace aus Repositorys installieren.Ändern Sie IFS in Ihrem Skript? Auch ich bin in einem meiner Skripte auf dasselbe Problem gestoßen und habe dasselbe gedacht (32-Bit-Datei wird vom Shell-Skript auf einem 64-Bit-Computer gelesen). Aber das war in meinem Fall nicht das Problem. Stattdessen habe ich IFS in Komma 'und' zurück in eine neue Zeile geändert, was den Parser irgendwie verwirrte und diesen Fehler verursachte.
Ich habe gerade jede Änderung in IFS entfernt und es funktioniert jetzt einwandfrei !!!
quelle