Ich bin auf Ubuntu auf 32-Bit-Computer.Ich möchte ein Beispielprogramm wie hello.c
(siehe unten) für ARM-Architektur zu kompilieren.So für dieses Kreuz Compilation I installierte Tools über die Eingabeaufforderung .ie Liste der Tools, die ich installiert haben:sehen Sie die Kreuz kompilierte ausführbare Ausgabe für ARM-Architektur auf Host-Maschine
sudo apt-get install gcc-arm-linux-gnueabi
sudo apt-get install build-essential
sudo apt-get install binutils-multiarch
und schließlich ich mit dem Befehl
arm-linux-gnueabi-gcc hello.c -o hello
und es kompiliert erfolgreich mein Source-Programm zusammengestellt, aber wenn ich ausführen keine Ausgabe
./hello
bash: ./hello: Kann keine Binärdatei ausführen: Exec format error
was wäre das Problem?
Ich wusste, dass für Cross-Compiler bedeutet einen Prozess des Kompilierens und Erstellen ausführbaren Codes für eine andere Plattform als die, auf denen der Compiler läuft. Nicht sagen, wegen der Architektur Unterschied es auftritt.Falls in einigen Fällen, wenn mein Quellcode Es gibt einige Segmentierungsfehler oder Fehler, die ich beheben kann, indem ich das Programm (Anzeigeausgabe) in der Hostmaschine selbst ausführe, bevor ich es an die Zielrechnerarchitektur vom Typ ARM sende.
#include<stdio.h>
int main(void)
{
printf("hello world\n");
}
Für Ausführen ausführbare Datei, die nicht für Ihren laufenden Arhiteticoire passt verwenden Sie virtuelle Maschine oder Emulator. Außerdem können Sie für gängige Debug-Probleme Ihre ausführbare Datei für * Host-Maschine * kompilieren, damit Sie sie ausführen können. – Tsyvarev