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

网上搭建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窗口,随便建立一个目录

 

  1. mkdir iphoneenv
  2. cd iphoneenv

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

 

获取源码

 

  1. svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm-svn -r 42498
  2. pushd llvm-svn
  3. ./configure –enable-optimized
  4. make ENABLE_OPTIMIZED=1
  5. sudo make install
  6. LLVMOBJDIR=`pwd`
  7. popd

 

获取iphone-dev SVN代码库

 

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

 

建立一个保存toolchain的目录。

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

 

编译odcctools

 

  1. mkdir -p build/odcctools
  2. pushd build/odcctools
  3. ../../odcctools/configure –target=arm-apple-darwin –disable-ld64
  4. export INCPRIVEXT="-isysroot /Developer/SDKs/MacOSX10.4u.sdk"
  5. make
  6. sudo make install
  7. 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的当前目录):

 

  1. sudo mkdir /usr/local/share/iphone-filesystem
  2. sudo cp -Rp /iphone_image/* /usr/local/share/iphone-filesystem/

 

设置$HEAVENLY的环境变量

 

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

 

  1. pushd include
  2. ./configure –with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk
  3. sudo bash install-headers.sh
  4. popd

 

安装csu

 

  1. mkdir -p build/csu
  2. pushd build/csu
  3. ../../csu/configure –host=arm-apple-darwin
  4. sudo make install
  5. popd

 

configure和make LLVM-GCC

 

  1. mv llvm-gcc-4.0-iphone/configure llvm-gcc-4.0-iphone/configure.old
  2. 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
  3. sudo ln -s /usr/local/arm-apple-darwin/lib/crt1.o //usr/local/arm-apple-darwin/lib/crt1.10.5.o
  4. mkdir -p build/llvm-gcc-4.0-iphone
  5. pushd build/llvm-gcc-4.0-iphone
  6. export FLAGS_FOR_TARGET="-mmacosx-version-min=10.1"
  7. sh ../../llvm-gcc-4.0-iphone/configure –enable-llvm=`llvm-config –obj-root` /
  8. –enable-languages=c,c++,objc,obj-c++ –target=arm-apple-darwin –enable-sjlj-exceptions /
  9. –with-heavenly=$HEAVENLY –with-as=/usr/local/bin/arm-apple-darwin-as /
  10. –with-ld=/usr/local/bin/arm-apple-darwin-ld
  11. make LLVM_VERSION_INFO=2.0-svn-iphone-dev-0.3-svn
  12. sudo make install
  13. popd
  14. popd

 

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

 

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

整合XCode

 

接下来,整合XCode:

 

下载XCode模板

 

解压缩,把

  1. iPhone UIKit Skeleton Application

这个文件夹复制到

  1. /Developer/Library/XCode/Project Templates/Application/

 

好了,打开XCode,新建一个项目,你会发现列表里已经出现了

iPhone UIKit Skeleton Application

这样一个模板(不在iPhone OS分类里而是在Mac OS X分类)

直接创建项目,取个名字, 直接编译,成功。

 

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

 

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

 

比如:

 

你需要把

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

改成:

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

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

改成:

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

 

把LDFLAGS里的

  1. -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/

你可能感兴趣的:(xcode,application,iPhone,makefile,Terminal,installer)