在Mac上编译ARM汇编文件

5

我在使用Mac Os X时遇到了编译.s格式的ARM汇编文件的问题。 我的.s文件内容如下:

mov r0, r1

我想测试一下它是否有效。但是当我运行arm-elf-as my.s时,获得了一个a.out文件。我执行chmod + x a.out./a.out,但它显示无法执行二进制文件

这让我感到困惑,因为如果我使用arm-elf-as编译它应该能够执行。我应该如何编译这个.s文件?


您需要一个带有正确操作系统的ARM处理器(或模拟器)才能运行您的ARM二进制文件。 - Basile Starynkevitch
1
我认为你需要澄清一下,你是想在 Mac 上执行 ARM 文件吗?Mac 不能运行 ARM 二进制文件,只能运行 x86 二进制文件(可能使用 Rosetta 运行 PowerPC 二进制文件)。 - Joachim Isaksson
如果我想在Mac OS X上进行汇编,我应该使用nasm、as还是其他编译器? - paulr
1个回答

4

您组装的没问题,只是因为Mac没有ARM CPU,所以无法运行。如果您安装带有iOS支持的Xcode,则可以编译ARM代码:

# the file
$ cat foo.s
    mov r0, r1

# compile with llvm-gcc
$ /Developer/Platforms/iPhoneOS.platform/usr/bin/llvm-gcc-4.2 -arch armv6 -c foo.s

# resulting file is ARM object file
$ file foo.o
foo.o: Mach-O object arm

# and you can disassemble it
$ otool -v -t foo.o
foo.o:
(__TEXT,__text) section
00000000    e1a00001    mov r0, r1

您将无法运行任何东西,因为您需要一个运行时系统和ARM CPU。例如,您可以使用-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk编译iPhoneOS。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接