gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 19:02:23 26 4
gpt4 key购买 nike

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

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

它成功了,并生成一个“hello”,其详细信息如下:(我将其放入 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

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

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

但是不行,运行结果是这样的:

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

那么,有人可以帮助我吗?发自内心的感谢

最佳答案

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

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

如果是这种情况,您不应使用 arm-none-eabi-gcc 工具链,该工具链针对的是裸机(非 Linux)目标平台 - 请参阅 here有关 gcc 工具链名称与其目标系统之间关系的说明。

更具体地说,应该使用 --specs=nosys.specs 选项当为不运行通用操作系统(即 Linux)的系统进行编译时。

您应该使用 arm-linux-gnueabihf 之一或aarch64-linux-gnu反而。如果您运行的是 32 位 ARM Linux,则应使用第一个工具链;如果您运行的是 64 位 Linux,则应使用第二个工具链。

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

关于c - 如何在arm-none-eabi-gcc中指定Cortex-A53?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56058269/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com