Используя MacPorts, я только что установил arm-elf-gcc на свой MacBook Pro.Это сработало безупречно, и все, кажется, работает нормально.
Однако после компиляции простой тестовой программы hello world на C и C ++ и попытки запустить любую из них на целевой плате (плате на основе ARM9, работающей под Debian Linux), они немедленноseg fault.
Я немного застрял, как идти по поводу отладки, так как на целевой плате доступно ограниченное количество инструментов и нет gdb.Я успешно собрал и запустил другой код, используя кросс-компилятор Linux, поэтому он должен работать.
Любые идеи?
Следуя предложению, которое я собрал и запустил gdbserver, я получаю следующее в gdbна хосте:
Программа получила сигнал SIGSEGV, Ошибка сегментации.0x00000000 в ??()
Я подумал, что это может быть проблема со стандартными библиотеками, поэтому я удалил все вызовы и получил только пустую основную строку, которая возвращает 0, она скомпилирована с -Wall -g hello-arm.cpp -static .В качестве теста я скомпилировал тот же исходный код с помощью кросс-компилятора Linux, и он работает и работает нормально.Единственное отличие, которое я вижу, в том, что скомпилированная версия для Linux более чем в два раза больше, и разница в выводе команды file :
arm-elf-gcc: ELF 32-bit LSBисполняемый файл, ARM, версия 1, статически связанный, без зачистки
arm - * - linux: ELF 32-битный исполняемый файл LSB, ARM, версия 1, со статической связью, для GNU / Linux 2.4.18, без зачистки