在Mac上为iOS编译ARM

时间:2012-04-25 20:35:52

标签: iphone macos assembly arm jailbreak

这有点类似于Compiling ARM .s file on Mac

特别是Simon Urbanek给出的回应,谢谢!

我基本上想知道如何让这个asm文件在越狱的iPhone上运行。目前,我正在交叉编译并尝试将对象放在iPhone上并运行它没有成功,因为它显然不适用于iPhoneOS,它只是没有Mach-O头的ARM代码。知道如何让这个工作吗? -isysroot可能就是答案,但我提供了SDK文件作为输入,我没有得到一个mach-o标题。

另外,我还想知道是否有办法在不使用内联gcc的情况下在iphone上编译ASM代码。

无论如何,这是当前的工作流程:

[在Mac上]

$ cat foo.s
mov r0, r1

$/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2 -arch armv6 -c foo.s

$ file foo.o
foo.o: Mach-O object arm

$ otool -v -t foo.o
foo.o:
(__TEXT,__text) section
00000000    e1a00001    mov r0, r1

[在iPhone上]

$ file foo.o
foo.o: Mach-O object arm

$ otool -v -t foo.ofoo.o:
(__TEXT,__text) section
00000000    e1a00001    mov r0, r1

1 个答案:

答案 0 :(得分:0)

编译代码是不够的,你还必须链接它以从目标代码生成可执行文件:

$/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/usr/llvm-gcc-4.2/bin/llvm-gcc-4.2 -arch armv6 foo.o -o foo
$./foo

如果您省略了C / C ++部分,并从汇编步骤开始,您可以使用本文档来理解: http://markuskimius.wikidot.com/programming:explain:compiling