【发布时间】:2019-10-06 14:41:36
【问题描述】:
我一直在尝试为 ARM BE8 系统编译以下代码(运行具有大端数据访问的小端代码)。
我的代码如下:
.global main
.type main, %function
main:
ldr pc, =0x12345678
预期的输出是:
04 f0 1f e5 <- little endian opcode
12 34 56 78 <- big endian data
我正在使用 Makefile,首先尝试编译使用:
arm-unknown-linux-musleabi-gcc main.S -o main.o -mbig-endian -mbe8
然后,使用链接:
arm-unknown-linux-musleabi-ld main.o -o main -mbig-endian
但输出二进制 main 包含大端代码而不是小端代码。
尝试链接时使用:
arm-unknown-linux-musleabi-ld main.o -o main -mbig-endian -mbe8
我收到以下错误:
... is already in final BE8 format
【问题讨论】:
-
较旧的 arm 内核不支持 be8,只支持较新的,因此请尝试指定 armv7 架构。看看这是否会改变它和/或确定你在这个 gnu 二进制文件中设置的默认核心
标签: gcc compiler-errors arm cross-compiling endianness