Как кросскомпилировать программу Hello World на C для ARM

У меня есть эта простая программа с исходными текстами в папке src и включенными в папку inc. Обычно я компилирую это с помощью:

gcc -I../inc *.c

Это оставляет 'a.out' как программу, которая отлично работает на этом компьютере.

Но как мне скомпилировать это для моего BeagleBone Black (ARM)? При этом я думаю о:

gcc (some arguments to crosscompile for arm) -I../inc *.c

person Embed101    schedule 14.01.2014    source источник
comment
Вы установили на свой компьютер набор инструментов ARM?   -  person Paul R    schedule 14.01.2014
comment
вы не compile это, на самом деле вы кросс-компилируете его.   -  person Sourav Ghosh    schedule 14.01.2014
comment
Спасибо за вопрос, Пол. Да. Я использую архив git и uboot для ядра, поэтому я уже использую make CROSS_COMPILE = arm-linux-gnueabi- ARCH = arm uImage.   -  person Embed101    schedule 14.01.2014
comment
какую ошибку вы получаете?   -  person Dipto    schedule 14.01.2014
comment
Хороший вопрос, Дипто, дело в том, что я на самом деле не уверен, как скомпилировать его для ARM, и ничего не делать не дает ошибок. Я пробовал gcc CROSS_COMPILE = arm-linux-gnueabi- ARCH = arm -I ../ inc * .c, что приводит к: gcc: error: CROSS_COMPILE = arm-linux-gnueabi-: нет такого файла или каталога и gcc: error : ARCH = arm: Нет такого файла или каталога.   -  person Embed101    schedule 14.01.2014
comment
Вы запутались между опциями make-файла и опциями gcc - создайте простой make-файл для вашего проекта в том же стиле, что и ваш существующий make-файл ARM, а затем используйте make CROSS_COMPILE=..., как обычно. В качестве альтернативы посмотрите на команды сборки, сгенерированные при создании uImage, и используйте из них переключатели gcc.   -  person Paul R    schedule 14.01.2014
comment
Извините за вашу правую, серьезную ошибку. Но мой make-файл ядра имеет длину 1500 строк. Я не собираюсь углубляться в это. Есть ли аргументы, которые я могу дать gcc, чтобы сделать его кросс-компиляцией для arm?   -  person Embed101    schedule 14.01.2014
comment
Что ж, для черного уса вы должны использовать набор инструментов arm-linux-gnueabihf-.   -  person unixsmurf    schedule 14.01.2014
comment
Не бойтесь нырять - это лучший способ учиться!   -  person Paul R    schedule 15.01.2014


Ответы (1)


Поскольку вы говорите, что можете использовать make CROSS_COMPILE=arm-linux-gnueabi- ARCH=arm uImage, в вашем распоряжении должен быть набор инструментов arm gnueabi. Тогда это должно быть так же просто, как называть это как

arm-linux-gnueabi-gcc -I../inc *.c
person auselen    schedule 14.01.2014
comment
Оселен, вы классный сэр. Это именно то, что я искал. И это работает! - person Embed101; 14.01.2014