2012-02-05 109 views
3

我在Mac Os X上,並且在編譯.s ARM程序集文件時遇到問題。 我.s文件是這樣的:在Mac上編譯ARM .s文件

mov r0, r1 

只是爲了看看它是否工作。 但是當我做 arm-elf-as my.s 我得到一個 a.out文件。 我做 chmod +x a.out./a.out 但它說 cannot execute binary file

這有我困惑,因爲它應該能執行,如果我編譯它臂精靈作爲。我如何去編譯這個.s?

+0

您需要一個具有正確操作系統的ARM處理器(或模擬器)來運行您的ARM二進制文件。 – 2012-02-05 16:37:23

+1

我想你需要澄清一下,你是否試圖在Mac上執行一個ARM文件? Mac不會運行ARM二進制文件,只是x86二進制文件(可能還有使用Rosetta的PowerPC二進制文件) – 2012-02-05 16:38:31

+0

感謝幫助提供者 – paulr 2012-02-05 16:40:26

回答

2

你正在裝配它,你不能在Mac上運行它,因爲Macs沒有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。