我正在遵循教科书中的基本“Hello World”示例,其目的是在 MacOS 上使用 Xcode 创建和交叉编译一个简单的命令行程序,然后在越狱的 iPad 上运行它。我在 MacOS 10.6.8 上使用 Xcode 4.2 安装的 arm-apple-darwin10-llvm-gcc-4.2 交叉编译器。示例代码是:
#include <stdio.h>
main ( ) {
printf("Hello, World!");
}
我正在尝试的编译是这样的:
/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin10-llvm-gcc-4.2 -o hello hello.c -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk
这会在使用 file 命令显示时生成一个对象:
$ file hello
hello: Mach-O executable arm
好的。到目前为止,一切都很好。我应该可以将它复制到我的 iPad 并使用 ldid。
但是它失败了:
MyiPad: /Applications root# ldid -S hello
codesign_allocate: object: hello malformed object (unknown load command 8)
util/ldid.cpp(582): _assert(78:WEXITSTATUS(status) == 0)
此外,如果我在 MacOS 上运行字符串,它会显示相同的错误。
$ strings hello
strings: object: hello malformed object (unknown load command 8)
我认为 Xcode 的配置或设置有问题。或者我还没有喝足够的咖啡。但这是一个教科书的例子,很明显我在我的设置中遗漏了一些东西。我还尝试根据iOS 5.1 和 iPad 3 中的 Xcode 4.2 和视网膜设置 iPhoneOS5.1.sdk 和平台、sdk 和 Sim 目录
任何指针都非常感谢。