Mit MacPorts habe ich gerade arm-elf-gcc auf meinen MacBook Pro installiert. Dies hat einwandfrei funktioniert und alles scheint gut zu laufen.
Nach dem Kompilieren eines einfachen "Hello World" Testprogramms in C und C++ und dem Versuch, es auf dem Zielboard (einem ARM9 basierten Board mit Debian Linux) auszuführen, treten sofort Segmentation faults auf.
Ich bin etwas ratlos, wie ich das debuggen soll, da auf dem Zielboard nur begrenzte Tools verfügbar sind und kein gdb vorhanden ist. Ich habe erfolgreich anderen Code mit einem Linux-basierten Cross-Compiler erstellt und ausgeführt, also sollte es funktionieren.
Ideen?
Nach dem Vorschlag habe ich gdbserver erstellt und ausgeführt, ich erhalte Folgendes in gdb auf dem Host:
Programm hat ein Signal SIGSEGV erhalten, Segmentation fault. 0x00000000 in ?? ()
Ich dachte es könnte ein Problem mit den Standard-C-Bibliotheken sein, also habe ich alle Aufrufe entfernt und habe nur ein leeres Hauptprogramm, das 0 zurückgibt. Es ist mit -Wall -g hello-arm.cpp -static kompiliert. Zum Test habe ich die gleiche Quelle mit einem Linux-basierten Cross-Compiler kompiliert und sie läuft und beendet sich fehlerfrei. Der einzige Unterschied, den ich erkennen kann, ist, dass die mit Linux kompilierte Version mehr als doppelt so groß ist und der Unterschied in der Ausgabe des Befehls file:
arm-elf-gcc: ELF 32-Bit LSB ausführbare Datei, ARM, Version 1, statisch gelinkt, nicht gestrippt
arm-*-linux: ELF 32-Bit LSB ausführbare Datei, ARM, Version 1, statisch gelinkt, für GNU/Linux 2.4.18, nicht gestrippt