как указать Cortex-A53 в arm-none-eabi-gcc? - PullRequest
0 голосов
/ 09 мая 2019

Я пытаюсь скомпилировать HELLOWORLD.c с помощью arm-none-eabi-gcc в minGW, команда выглядит следующим образом:

D:\code>arm-none-eabi-gcc hello.c -o hello -shared

, и это сработало, и генерирует "привет", которыйподробная информация выглядит следующим образом: (я помещаю ее в Ubuntu и заполняю ее):

gec@ubuntu:/mnt/hgfs/code$ file hello
hello: ELF 32-bit LSB shared object, ARM, EABI5 version 1 (SYSV), dynamically linked, not stripped

, а затем помещаю ее в целевую платформу (Cortex-A53) и запускаю, в результате получается:

[root@GEC6818:~]# ./a
Segmentation fault

и затем я заметил, что должен указать процессор или архитектуру в команде компиляции, поэтому я собираю так:

D:\code>arm-none-eabi-gcc hello.c -o a -mcpu=cortex-a53 --specs=nosys.specs

, но это не работает, запуститерезультат таков:

[root@GEC6818:~]# ./a
Killed

Итак, может ли какое-нибудь тело помочь мне ??от всего сердца спасибо

1 Ответ

1 голос
/ 09 мая 2019

Из командной строки, видимой в вашем сообщении, кажется, что вы пытаетесь выполнить свою программу в системе Linux:

[root@GEC6818:~]# ./a
Killed

В этом случае вам не следует использовать набор инструментов arm-none-eabi-gcc, предназначенный для целевой платформы baremetal (не Linux) - см. здесь для объяснения связи между набором инструментов gcc. название и система, на которую он нацелен.

Более конкретно, опция --specs=nosys.specs должна использоваться при компиляции для системы, которая не работает под управлением операционной системы общего назначения, то есть Linux.

Вы должны использовать один из arm-linux-gnueabihf или aarch64-linux-gnu . Первый набор инструментов следует использовать, если вы используете 32-разрядную версию ARM Linux, а второй - если вы используете 64-разрядную версию Linux.

Вы можете определить, какую версию вы используете, используя команду file для исполняемого файла, доступного в вашей исходной системе ARM, такого как /bin/sh. Если /bin/sh является 32-битным исполняемым файлом ELF, используйте arm-linux-gnueabihf. Если это исполняемый файл ELF 64-bit, используйте aarch64-linux-gnu.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...