【问题标题】:Compiling ARM on Mac for iOS在 Mac 上为 iOS 编译 ARM
【发布时间】:2012-05-06 14:11:33
【问题描述】:

这个有点像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

【问题讨论】:

    标签: iphone macos assembly arm jailbreak


    【解决方案1】:

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

    $/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

    【讨论】:

    • 正确,是的,我忘记了那一步,但此时它仍然是格式错误的 mach-o 文件,因为没有标题。代码看起来像这样: __text:00000000 ;段类型:纯代码 __text:00000000 AREA __text, CODE, READWRITE, ALIGN=0 __text:00000000 CODE32 __text:00000000 MOV R0, R1 __text:00000000 ; __text 结束 __text:00000000 __text:00000000 END
    • 好吧,如果你链接它,那么它应该是正确的......你是否尝试过运行它而不试图怀疑地找出文件的确切二进制表示?还可以在这里查看需要什么以及何时需要标头:muppetlabs.com/~breadbox/software/tiny/teensy.html
    猜你喜欢
    • 2012-02-27
    • 2017-08-04
    • 1970-01-01
    • 1970-01-01
    • 2017-07-05
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2015-11-27
    相关资源
    最近更新 更多