您的位置:首页 > 大数据 > 人工智能

在Leopard中编译搭建非官方iPhone toolchain开发环境并整合到XCode

2010-04-07 17:15 561 查看
网上搭建iPhone开放开发环境的文章已经不少了。本文参考了不少资料,详细说明如何成功在Leopard中搭建一个完整的开发环境并整合XCode进行iPhone源生程序的开发。

在XCode中整合toolchain开发环境和苹果官方的iPhone SDK并不冲突,你可以在同一个XCode中既建立toolchain的开发工程,也可以建立官方的iPhone SDK工程。

本文在Leopard 10.5.2,XCode 3.1 Beta 3(随iPhone SDK Beta3提供),iPhone OS 1.1.4测试通过。

准备工作

请确认操作系统为Leopard 10.5.2。
请确认XCode已经安装。最好安装最新的官方XCode 3.1 Beta。
手中最好是有iPhone或者iPod Touch, 已经jailbreak。

获取toolchain源码

打开一个terminal窗口,随便建立一个目录

mkdir iphoneenv

cd iphoneenv

后面的操作都在这个目录中进行,只需复制下文文字框中的内容,贴到terminal窗口执行即可。

获取源码

svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42498

pushd llvm-svn

./configure –enable-optimized

make ENABLE_OPTIMIZED=1

sudo make install

LLVMOBJDIR=`pwd`

popd

获取iphone-dev SVN代码库

svn checkout http://iphone-dev.googlecode.com/svn/trunk/ iphone-dev

pushd iphone-dev

建立一个保存toolchain的目录。

sudo mkdir /usr/local/arm-apple-darwin

编译odcctools

mkdir -p build/odcctools

pushd build/odcctools

../../odcctools/configure –target=arm-apple-darwin –disable-ld64

export INCPRIVEXT="-isysroot /Developer/SDKs/MacOSX10.4u.sdk"

make

sudo make install

popd

获取iPhone中的框架和头文件

获取这个iPhone的镜像有很多办法,这里介绍几种:

最省事的办法(如果手头没有iPhone或是没有wi-fi):

在google搜索iphone_image,找到了就直接下载,解压缩。

麻烦点的办法(手头有jailbreak并安装了installer的iPhone或者iPod Touch):

如果你家里或者单位有wi-fi,而且iPhone已经连上w-ifi,直接在iPhone的Installer里找到BSD Subsystem和OpenSSH并安装,然后用scp把iPhone里面从根目录开始的所有子目录的所有的文件拷贝出来。

或者在installer里安装AFPd,然后用Finder打开afp://你的iphone的ip地址,用户名用root, 密码用alpine,把里面的所有文件直接拽出来。

详细方法不介绍了,相信你一定能搞定。

复制镜像

假设你把这个镜像里的所有文件都放在/iphone_image目录,那么执行下面操作(不要离开terminal的当前目录):

sudo mkdir /usr/local/share/iphone-filesystem

sudo cp -Rp /iphone_image/* /usr/local/share/iphone-filesystem/

设置$HEAVENLY的环境变量

HEAVENLY=/usr/local/share/iphone-filesystem

pushd include

./configure –with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk

sudo bash install-headers.sh

popd

安装csu

mkdir -p build/csu

pushd build/csu

../../csu/configure –host=arm-apple-darwin

sudo make install

popd

configure和make LLVM-GCC

mv llvm-gcc-4.0-iphone/configure llvm-gcc-4.0-iphone/configure.old

sed 's/^FLAGS_FOR_TARGET=$/FLAGS_FOR_TARGET=${FLAGS_FOR_TARGET-}/g' llvm-gcc-4.0-iphone/configure.old > llvm-gcc-4.0-iphone/configure

sudo ln -s /usr/local/arm-apple-darwin/lib/crt1.o //usr/local/arm-apple-darwin/lib/crt1.10.5.o

mkdir -p build/llvm-gcc-4.0-iphone

pushd build/llvm-gcc-4.0-iphone

export FLAGS_FOR_TARGET="-mmacosx-version-min=10.1"

sh ../../llvm-gcc-4.0-iphone/configure –enable-llvm=`llvm-config –obj-root` /

–enable-languages=c,c++,objc,obj-c++ –target=arm-apple-darwin –enable-sjlj-exceptions /

–with-heavenly=$HEAVENLY –with-as=/usr/local/bin/arm-apple-darwin-as /

–with-ld=/usr/local/bin/arm-apple-darwin-ld

make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn

sudo make install

popd

popd

这样,专门用来编译iPhone的toolchain gcc就编译完了,文件位置在:

/usr/local/bin/arm-apple-darwin-gcc

整合XCode

接下来,整合XCode:

下载XCode模板

解压缩,把

iPhone UIKit Skeleton Application

这个文件夹复制到

/Developer/Library/XCode/Project Templates/Application/

好了,打开XCode,新建一个项目,你会发现列表里已经出现了
iPhone UIKit Skeleton Application
这样一个模板(不在iPhone OS分类里而是在Mac OS X分类)
直接创建项目,取个名字, 直接编译,成功。

建议你使用本文的方法编译toolchain,而不是直接下载别人编译好的安装包,这样问题会少很多。

如果你下载了其他地方的例子,可能需要修改Makefile才可以编译成功。尤其是google code的iPhone代码。

比如:

你需要把

CC=/usr/local/arm-apple-darwin/bin/gcc

改成:

CC=/usr/local/bin/arm-apple-darwin-gcc -v



CC=/usr/local/arm-apple-darwin/bin/g++

改成:

CXX=/usr/local/bin/arm-apple-darwin-g++

把LDFLAGS里的

-Wl,-syslibroot,/usr/local/arm-apple-darwin/heavenly

直接删掉。

好了,这样,你的开发环境就搭建完了。

参考文档

http://wikee.iphwn.org/howto:toolchain_on_leopard
http://www.iphonetw.net/?q=books/unofficialdev/osxbuildtoolchain
http://www.cocoamachine.com/blog/2008/01/make-your-own-native-iphone-ap.html
http://ansani.it/2008/08/12/build-the-toolchain-for-iphone-20x-on-macosx-105x/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: