2011-08-28 112 views
2

我该如何设置所有东西,从我的OSX 10.7 Macbook Pro交叉编译到我的越狱第4代iPod touch。我主要是为了能够将开源库移植到iphone。我似乎无法找到任何有关iOS 4交叉编译的优秀/最新文章。在Mac上交叉编译iPhone?

回答

2

也没有。我试过的所有工具链最终都无法工作或创建x86_64二进制文件,这在iOS上不起作用。 我目前正试图直接在iPad上构建apr,因为我已经从Cydia安装了所有必需的东西,但是我卡住了kqueue.c而没有正确编译。我已经移植了lua和其他一些软件,所以我可以说一般这样工作。建立在本地平台上而不是交叉编译的主要原因是某些程序依赖于其他程序(例如:apr上的apr-util),因此其中一些程序必须运行。然而,在intel上运行arm是不可能的(至少在没有仿真的情况下,iPhone Simulator使用i386二进制文件)。

任何人谁是热衷于使用/建筑UNIX工具在iOS上必须保持以下几点:

  • 你可能会发现你想要的东西,但它不是说,预计它会工作(这意特别是对于开发者来说,例如:apr在Cydia中发布,但它不是一个完整的包,所以构建apr-util没有用)。
  • 你必须使用越狱设备。如果您打破操作系统并需要恢复,这可能会成为问题。一定要保存SHSH,以便能够恢复到可越狱的iOS。
  • 如果你没有找到你正在寻找的东西,事情会变得非常混乱。大多数软件虽然被认为可以在通用的UNIX系统上工作,但在iOS上可能会遇到问题,它们在结构上和工作方式上都接近OS X,但在网络相关部分尤其存在差异。 另外,您可能必须(假)代码签署您构建的任何软件。即使没有构建问题的软件也可能存在不必要的意外:我成功地为iOS构建了apache2,但是当我运行时,我被SIGSYS卡住了,没有更多的解释。

所以,要小心并且自己动手,因为事情通常不容易。

关于Mac没有工具链(Apple提供的除外)的事实,这可能会有一个解释,因为您不需要有Mac下载Xcode,而Mac的开销通常比开发者多愿意花钱。这意味着尽管最近出现了繁荣的mac硬件,但没有太多人做同样的事情。工具链已经或多或少成功地为基于Linux的操作系统(例如Ubuntu)构建。您始终可以尝试使用VM。

2

经过一番尝试,我发现可以使用./configure并强制它为arm-apple-darwin11构建。你必须在./configure之后直接使用这些标志。--some-flags: CPP =“cpp”CXXCPP =“cpp”CXX =“/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple -darwin10-llvm-g ++ - 4.2“CXXFLAGS =” - O -arch armv6 -arch armv7 -isysroot $ SDK_ROOT/SDKs/iPhoneOS5.0.sdk“CC =”/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin /arm-apple-darwin10-llvm-gcc-4.2“CFLAGS =” - O -arch armv6 -arch armv7 -isysroot $ SDK_ROOT/SDKs/iPhoneOS5.0.sdk“AR =”/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ar“AS =”/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/as“LD =”/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/ld“LDFLAGS = -lstdC++ -arch armv6 -arch armv7 -isysroot $ SDK_ROOT/SDKs/iPhoneOS5.0.sdk“LIBTOOL =”/ Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/libtool“STRIP =”/ Developer/Platforms/iPhoneOS .platform/Developer/usr/bin/strip“RANLIB =”/ Developer/Platforms/iPhoneOS。平台/开发人员/ usr/bin/ranlib“

CPP和CXXCPP是所需的预处理器(默认值); CC和CXX是通过Xcode附带的arm和c和C++编译器的路径,另一个是标志编译器获取或者宏定义了编译时使用的最常用工具的路径,我不能授予所有的东西,但是这是你应该做什么的好主意。 : --prefix =/tmp/build --host = arm-apple-darwin11 他们所做的就是帮助创建一个makefile文件,该文件将会在/ tmp/build目录下的文件夹中发送库文件和程序。