我在使用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文件?
我在使用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文件?
您组装的没问题,只是因为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
-isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS3.2.sdk
编译iPhoneOS。