проблемы с кросс-компилятором arm-elf-gcc в OS X

#osx-snow-leopard #arm #cross-compiling

#osx-snow-leopard #arm #перекрестная компиляция

Вопрос:

Я пытаюсь скомпилировать свою первую программу Linux ARM hello world, и когда я копирую и запускаю двоичный файл на моей целевой плате Linux (linuxstamp Atmel arm 9g20) Я получаю «Незаконную инструкцию»

Я запускаю arm-elf-gcc-4.6 в OS X из macports. Я использую Eclipse для и IDE. Похоже, что сборка предназначена скорее для автономной программы, отличной от ОС, а не для кода для запуска в пользовательском пространстве Linux. Может ли кто-нибудь указать мне правильное направление? Спасибо.

код:

 #include<stdio.h>

int main(){
    printf("hello worldn");
    return 0;
}
  

Сборка версии конфигурации для project ArmTest **

сделайте все цели сборки: ArmTest.elf Вызывая: ARM Mac OS X GCC C Компоновщик /opt/local/bin/arm-elf-gcc-4.6 -nostartfiles -Wl,-Map,ArmTest.map -mcpu=arm920 -mthumb -o»ArmTest.elf» ./main.o
/opt/local/lib/gcc/arm-elf/4.6.0/../../../../ arm-elf/bin/ld: предупреждение: не удается найти символ ввода _start; значение по умолчанию 0000000000008000 Цель завершения построения: ArmTest.elf

Вызываем: ARM Mac OS X GNU Создаем флэш-образ /opt/local/bin/arm-elf-objcopy -O двоичный ArmTest.elf «ArmTest.hex» Готовая сборка: ArmTest.hex

Вызов: ARM Mac OS X GNU Создать список /opt/local/bin/arm-elf-objdump -h -S ArmTest.elf > «ArmTest.lst» Готовая сборка: ArmTest.lst

Вызываем: ARM Mac OS X GNU Print Size /opt/local/bin/arm-elf-size —format=berkeley ArmTest.elf текстовые данные bss dec шестнадцатеричное имя файла 8112 2104 232 10448 28d0 ArmTest.elf Готовая сборка: ArmTest.siz

Ответ №1:

Я запускаю arm-elf-gcc-4.6 в OS X из macports […] Похоже, что сборка больше предназначена для автономной программы, отличной от ОС, а не для кода для запуска в пользовательском пространстве Linux.

Действительно, это для встроенных устройств ARM без ОС Linux. Linux-вариант gcc в качестве кросс-компилятора для ARM должен иметь «linux» где-то в своем названии, например «arm-linux-gcc».