Kommentare
- Haben Sie dieses Programm kompiliert? Was ist die Ausgabe von readelf -A ./program.elf? Es gibt eine Reihe von Arm-Versionen. ARMv2, ARMv3, ARMv5, ARMv7 … Hard-Float- und Soft-Float-ABI: usw.
- Betrachten Sie diese Site ( wiki.debian.org / ArmEabiPort ) es sieht so aus ..: sollte: .. funktionieren. Möglicherweise müssen die Compileroptionen gegenüber Ihrer Hardware überprüft werden.
- Ich habe das Programm auf einem anderen Computer mit einem SDK kompiliert, aber dieses SDK wird von den Herstellern des Prozessors I Ich verwende, also würde ich mir vorstellen, dass ihr SDK die Build-Konfigurationen haben sollte, um auf ihren eigenen Chip abzuzielen, richtig?
- Das wäre auch meine Vermutung, aber das SDK könnte für verwendet werden multiple µ P. Überprüfen Sie weiterhin die
readelf -A ./program.elf
-Informationen, um dies zu überprüfen. Enthält der Fehler mehr als " kann die Binärdatei " nicht ausführen? - Warten.
bash ./program.elf
? Die Elf-Datei ist KEIN Bash-Skript. Führen Sie es nicht durch den Bash-Interpreter. Es ist eine Elf-Datei./program.elf
. Angenommen, das Ausführungsbit ist gesetzt.chmod a+x ./program.elf
.
Antwort
Der Befehl bash ./program.elf
sendet die Datei über den Bash-Interpreter.
Eine Elf-Datei ist eine kompilierte Binärdatei und sollte wie folgt über die Befehlszeile ausgeführt werden: ./program.elf
Vergessen Sie nicht, das ausführbare Bit für die Datei zu setzen mit:
chmod a+x ./program.elf
Antwort
Soweit ich weiß, ist es weitaus üblicher, dass ein ARMv7-Prozessor das Modell ARMv7-A ist (die Art, die für das Snapdragon 600/800 im Galaxy S4 und Nexus verwendet wird 5, sowie der Raspberry Pi 2 / Modell B), jedoch listet Ihr Ausgang den Systemchip als ARMv71 (auch bekannt als ARMv7 Revision 1) auf. Es ist durchaus möglich, dass die Variante des ARMv7-Prozessor-SDK, die Sie beim Kompilieren / Erstellen des Programms ausgewählt haben, einfach die falsche Teilmenge von ARMv7 war, ähnlich wie wenn Sie für ARMv7-A und stattdessen für ARMv7-M bauen wollten. Dies ist nur eine Vermutung, da ich keine Ahnung habe, für welchen Prozessor / welches Gerät Sie gebaut haben oder worauf Sie aufbauen, aber angesichts der wählerischen SoC-Prozessoren beim Ausführen von Programmen, die nicht speziell für sie kompiliert wurden, würde ich vorschlagen, die Quelle zu kompilieren wenn möglich direkt auf der fraglichen Maschine.
Kommentare
- Das native Kompilieren war mein erster Gedanke, aber der Versuch, dies zu tun, brachte eine andere Menge hervor Probleme, die ich ' auch zu lösen versuche. Der von mir verwendete Chip ist ein Xilinx-Prozessor und ich kompiliere auf einem Windows-Computer mit Xilinx SDK. Ich war davon ausgegangen, dass das Xilinx SDK die richtige Architektur für den ARM kompilieren sollte, den sie in Xilinx-Prozessoren verwenden. Daher ist es für mich ' seltsam, dass dies nicht ' scheint nicht der Fall zu sein.
- Wenn man es betrachtet, scheint es, als ob Xilinx mehrere Prozessorfamilien hat, die alle unter die Kategorie ARMv7x fallen, aber unterschiedliche Kombinationen verschiedener Armkerne verwenden werden häufig in ARMv7 cpus gefunden. Beispielsweise kann ein Modell zwei A9-Cortexes und einen A7-Cortex als sekundären Co-Prozessor haben, während ein anderes einen A8-Cortex mit einem anderen einzelnen A5-Cortex als Co-Prozessor haben kann. (Ich habe keine Ahnung, ob dies echte Combos in Xilinx-CPUs sind, nur Beispiele: P