这有点类似于Compiling ARM .s file on Mac
特别是Simon Urbanek给出的回应,谢谢!
我基本上想知道如何让这个asm文件在越狱的iPhone上运行。目前,我正在交叉编译并尝试将对象放在iPhone上并运行它没有成功,因为它显然不适用于iPhoneOS,它只是没有Mach-O头的ARM代码。知道如何让这个工作吗? -isysroot可能就是答案,但我提供了SDK文件作为输入,我没有得到一个mach-o标题。
另外,我还想知道是否有办法在不使用内联gcc的情况下在iphone上编译ASM代码。
无论如何,这是当前的工作流程:
$ 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
$ file foo.o
foo.o: Mach-O object arm
$ otool -v -t foo.ofoo.o:
(__TEXT,__text) section
00000000 e1a00001 mov r0, r1
答案 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