如何在arm-none-eabi-gcc中指定Cortex-A53?

时间:2019-05-09 11:20:58

标签: c linux arm

我正在尝试在minGW中使用arm-none-eabi-gcc编译HELLOWORLD.c,命令如下:

<form onSubmit={this.onSubmit.bind(this)}>

它起作用了,并生成了一个“ hello”,其详细信息如下所示:(我将其放入Ubuntu并将其归档):

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

然后将其放入目标平台(Cortex-A53)中并运行,结果是:

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

然后,我注意到我应该在compile命令中指定CPU或体系结构,所以我这样编译:

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

但是它不起作用,运行结果是这样:

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

那么,任何人都可以帮助我吗?衷心感谢

1 个答案:

答案 0 :(得分:1)

从您帖子中可见的命令提示符看来,您似乎正在尝试在Linux系统上执行程序:

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

在这种情况下,您不应使用针对裸机(非Linux)目标平台的arm-none-eabi-gcc工具链-有关gcc工具链之间关系的说明,请参见here名称和它要针对的系统。

更具体地说,在为未运行通用操作系统(例如Linux)的系统进行编译时,应该使用--specs=nosys.specs选项。 br />
您应该改用arm-linux-gnueabihfaarch64-linux-gnu之一。 如果运行的是32位ARM Linux,则应使用第一个工具链;如果运行的是64位Linux,则应使用第二个工具链。

您可以使用file命令对原始ARM系统中可用的可执行文件(例如/bin/sh)运行哪个版本。 如果/bin/sh是ELF 32位可执行文件,请使用arm-linux-gnueabihf。如果它是ELF 64位可执行文件,请使用aarch64-linux-gnu