4

我将如何设置一切以交叉编译从我的 OSX 10.7 Macbook pro 到我越狱的第 4 代 iPod touch。我的主要目标是能够将开源库移植到 iphone。我似乎找不到任何关于 iOS 4 交叉编译的好/最近的文章。

4

2 回答 2

4

After some attempt, I found out that it's possible to use ./configure and force it to build for arm-apple-darwin11. You have to use these flags directly after the ./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.platform/Developer/usr/bin/ranlib"

CPP and CXXCPP are the preprocessor required (the default one); CC and CXX are the path to the c and c++ compiler for arm that comes with Xcode, the other are flags the compiler gets or macros that defines the path to the most common tools used when compiling. I cannot grant everything will work, but this is a good idea of what you should do. I'd suggest to add to ./configure these flags:

--prefix=/tmp/build --host=arm-apple-darwin11

what they do is to help create a makefile that will send libs and programs in a folder under /tmp/build.

于 2012-03-11T21:40:39.083 回答
2

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

任何对在 iOS 上使用/构建 UNIX 工具感兴趣的人都必须牢记以下几点:

  • 你可能会找到你想要的东西,但并没有说它会按预期工作(这是专门为开发人员准备的。例如:apr 是在 Cydia 中提供的,但它不是一个完整的包,所以构建 apr-util 是没有用的)。
  • 您必须使用越狱设备。如果您破坏操作系统并需要恢复,这可能会成为一个问题。请务必保存 SHSH,以便您能够恢复到可越狱的 iOS。
  • 如果你没有找到你正在搜索的东西,事情会变得非常混乱。大多数软件,虽然被认为可以在通用 UNIX 系统上运行,但在 iOS 上可能会出现问题,它在结构和工作方式上接近 OS X,但在与网络相关的部分下尤其存在差异。另外,您可能必须对您构建的任何软件进行(假)代码签名。
  • 即使是没有构建问题的软件也可能带来意外的惊喜:我已经成功地为 iOS 构建了 apache2,但是当我运行时,我被 SIGSYS 卡住了,没有更多的解释。

所以,要当心并做好准备,因为事情通常并不容易。

关于 Mac 没有工具链的事实(Apple 提供的工具链除外),这可能是一个解释,因为您不需要 Mac 来下载 Xcode,而 Mac 的成本通常比开发人员愿意花费的要高。这意味着没有多少人在做和你一样的事情,尽管最近 mac 硬件很火爆。工具链已经或多或少成功地为基于 Linux 的操作系统构建,例如 Ubuntu。您始终可以尝试使用虚拟机。

于 2012-02-11T15:13:58.903 回答