在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测试通过。
请确认XCode已经安装。最好安装最新的官方XCode 3.1 Beta。
手中最好是有iPhone或者iPod Touch, 已经jailbreak。
mkdir iphoneenv
cd iphoneenv
后面的操作都在这个目录中进行,只需复制下文文字框中的内容,贴到terminal窗口执行即可。
pushd llvm-svn
./configure –enable-optimized
make ENABLE_OPTIMIZED=1
sudo make install
LLVMOBJDIR=`pwd`
popd
pushd iphone-dev
建立一个保存toolchain的目录。
sudo mkdir /usr/local/arm-apple-darwin
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或是没有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,把里面的所有文件直接拽出来。
详细方法不介绍了,相信你一定能搞定。
sudo mkdir /usr/local/share/iphone-filesystem
sudo cp -Rp /iphone_image/* /usr/local/share/iphone-filesystem/
pushd include
./configure –with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk
sudo bash install-headers.sh
popd
pushd build/csu
../../csu/configure –host=arm-apple-darwin
sudo make install
popd
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模板。
解压缩,把
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://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中整合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 42498pushd 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-devpushd iphone-dev
建立一个保存toolchain的目录。
sudo mkdir /usr/local/arm-apple-darwin
编译odcctools
mkdir -p build/odcctoolspushd 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-filesystempushd include
./configure –with-macosx-sdk=/Developer/SDKs/MacOSX10.4u.sdk
sudo bash install-headers.sh
popd
安装csu
mkdir -p build/csupushd 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.oldsed '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_leopardhttp://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/
相关文章推荐
- 在Leopard中编译搭建非官方iPhone toolchain开发环境并
- VMware虚拟机上搭建Linux iPhone Toolchain 2.x开发环境
- Ubuntu 16.04下Qt交叉编译开发环境搭建
- Mac和Xcode的第一次历险,成功在PC上安装iphone开发环境记(可在iphone或ipod touch真机上运行调试)
- windows下cocos2dx3.0开发环境及Android编译环境搭建
- 智能机开发环境搭建和编译(Ubuntu14.04[64bit] MTK)
- 基于Windows的iPad/iPhone开发编译环境
- cocos2d-for-iPhone 【开发环境搭建】
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
- 【Cocos2d-X(2.x) 游戏开发系列之二】cocos2dx最新2.0.1版本跨平台整合NDK+Xcode编译到Android 推荐
- [Windows驱动开发](一)VS2008搭建windows驱动编译环境
- SSH整合开发环境搭建
- Windows平台上安装搭建iPhone/iPad的开发环境
- 在Windows中搭建iPhone开发环境
- (整合)安卓开发环境搭建+常见问题解决
- 使用Maven搭建Struts2+Spring3+Hibernate4的整合开发环境
- Iphone开发环境搭建
- Objective-C初探-如何搭建和使用 Xcode 开发环境
- Ubuntu 16.04.3下FFmpeg编译与开发环境搭建