【发布时间】:2011-11-05 14:55:00
【问题描述】:
我将如何设置所有内容以从我的 OSX 10.7 Macbook pro 交叉编译到我越狱的第 4 代 iPod touch。我的主要目标是能够将开源库移植到 iphone。我似乎找不到任何关于 iOS 4 交叉编译的好/最近的文章。
【问题讨论】:
标签: macos gcc cross-compiling toolchain armv6
我将如何设置所有内容以从我的 OSX 10.7 Macbook pro 交叉编译到我越狱的第 4 代 iPod touch。我的主要目标是能够将开源库移植到 iphone。我似乎找不到任何关于 iOS 4 交叉编译的好/最近的文章。
【问题讨论】:
标签: macos gcc cross-compiling toolchain armv6
经过一番尝试,我发现可以使用./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.platform/Developer/usr/bin/ranlib"
CPP 和 CXXCPP 是所需的预处理器(默认); CC 和 CXX 是 Xcode 附带的 arm 的 c 和 c++ 编译器的路径,另一个是编译器获取的标志或定义编译时最常用工具的路径的宏。我不能承认一切都会奏效,但这是你应该做的一个好主意。
我建议将这些标志添加到./configure:
--prefix=/tmp/build --host=arm-apple-darwin11
他们所做的是帮助创建一个生成文件,该文件将在/tmp/build 下的文件夹中发送库和程序。
【讨论】:
我也没有。我尝试的所有工具链最终都无法工作或创建 x86_64 二进制文件,这在 iOS 上不起作用。 我目前正在尝试直接在我的 iPad 上构建 apr,因为我已经从 Cydia 安装了所有必需的东西,但是我卡住了 kqueue.c 无法正确编译。我已经移植了 lua 和其他一些软件,所以我可以说它一般是这样工作的。在本机平台上构建而不是交叉编译的主要原因是某些程序依赖于其他程序(例如:apr-util on apr),因此其中一些必须运行。但是,在 intel 上运行 arm 是不可能的(至少没有仿真,而且 iPhone 模拟器使用 i386 二进制文件)。
任何有兴趣在 iOS 上使用/构建 UNIX 工具的人都必须牢记以下几点:
所以,要小心并振作起来,因为事情通常并不容易。
关于 Mac 没有工具链的事实(Apple 提供的工具链除外),这可能是一个解释,因为您不需要拥有 mac 来下载 Xcode,而 mac 的成本通常比开发人员愿意要花。这意味着没有多少人在做和你一样的事情,尽管最近 mac 硬件很火爆。工具链已经或多或少成功地为基于 Linux 的操作系统构建,例如 Ubuntu。您可以随时尝试使用虚拟机。
【讨论】: