2

这有点类似于在 Mac 上编译 ARM .s 文件

尤其是 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
4

1 回答 1

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

于 2012-04-25T20:39:08.590 回答