我如何设置从我的OSX 10.7 Macbook pro到我的越狱第4代iPod touch的交叉编译。我的主要目标是能够将开源库移植到iphone。我似乎无法找到任何关于iOS 4交叉编译的好/近期文章。
答案 0 :(得分:3)
经过一番尝试,我发现可以使用./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
他们所做的是帮助创建一个make文件,该文件将在/tmp/build
下的文件夹中发送lib和程序。
答案 1 :(得分:2)
我也没有。我尝试的所有工具链最终都没有工作或创建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。您始终可以尝试使用VM。