Leopard中搭建iPhone toolchain環(huán)境并整合到XCode
Leopard中搭建iPhone toolchain環(huán)境并整合到XCode是本文要介紹的內(nèi)容,網(wǎng)上搭建iPhone開(kāi)放開(kāi)發(fā)環(huán)境的文章已經(jīng)不少了。本文參考了不少資料,詳細(xì)說(shuō)明如何成功在Leopard中搭建一個(gè)完整的開(kāi)發(fā)環(huán)境并整合XCode進(jìn)行iPhone源生程序的開(kāi)發(fā)。
在XCode中整合toolchain開(kāi)發(fā)環(huán)境和蘋果官方的iPhone SDK并不沖突,你可以在同一個(gè)XCode中既建立toolchain的開(kāi)發(fā)工程,也可以建立官方的iPhone SDK工程。本文在Leopard 10.5.2,XCode 3.1 Beta 3(隨iPhone SDK Beta3提供),iPhone OS 1.1.4測(cè)試通過(guò)。
準(zhǔn)備工作
請(qǐng)確認(rèn)操作系統(tǒng)為L(zhǎng)eopard 10.5.2。
請(qǐng)確認(rèn)XCode已經(jīng)安裝。最好安裝最新的官方XCode 3.1 Beta。手中最好是有iPhone或者iPod Touch,已經(jīng)jailbreak。獲取toolchain源碼
打開(kāi)一個(gè)terminal窗口,隨便建立一個(gè)目錄
- mkdir
- iphoneenv
- cd
- iphoneenv
后面的操作都在這個(gè)目錄中進(jìn)行,只需復(fù)制下文文字框中的內(nèi)容,貼到terminal窗口執(zhí)行即可。
獲取源碼
- 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代碼庫(kù)
- svn checkout http://iphone-dev.googlecode.com/svn/trunk/
- iphone-dev
- pushd iphone-dev
建立一個(gè)保存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中的框架和頭文件
獲取這個(gè)iPhone的鏡像有很多辦法,這里介紹幾種:
最省事的辦法(如果手頭沒(méi)有iPhone或是沒(méi)有wi-fi):在google搜索iphone_image,找到了就直接下載,解壓縮。麻煩點(diǎn)的辦法(手頭有jailbreak并安裝了installer的iPhone或者iPod Touch):
如果你家里或者單位有wi-fi,而且iPhone已經(jīng)連上w-ifi,直接在iPhone的Installer里找到BSD Subsystem和OpenSSH并安裝,然后用scp把iPhone里面從根目錄開(kāi)始的所有子目錄的所有的文件拷貝出來(lái)。
或者在installer里安裝AFPd,然后用Finder打開(kāi)afp://你的iphone的ip地址,用戶名用root, 密碼用alpine,把里面的所有文件直接拽出來(lái)。
詳細(xì)方法不介紹了,相信你一定能搞定。
復(fù)制鏡像
假設(shè)你把這個(gè)鏡像里的所有文件都放在/iphone_image目錄,那么執(zhí)行下面操作(不要離開(kāi)terminal的當(dāng)前目錄):
- sudo
- mkdir /usr/local/share/iphone-filesystem
- sudo cp -Rp /iphone_image/*
- /usr/local/share/iphone-filesystem/
#p#
設(shè)置$HEAVENLY的環(huán)境變量
- 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
這樣,專門用來(lái)編譯iPhone的toolchain gcc就編譯完了,文件位置在:
- /usr/local/bin/arm-apple-darwin-gcc
整合XCode
接下來(lái),整合XCode:
下載XCode模板。解壓縮,把
- iPhone
- UIKit Skeleton Application
這個(gè)文件夾復(fù)制到
- /Developer/Library/XCode/Project
- Templates/Application/
好了,打開(kāi)XCode,新建一個(gè)項(xiàng)目,你會(huì)發(fā)現(xiàn)列表里已經(jīng)出現(xiàn)了
- iPhone UIKit
- Skeleton Application
這樣一個(gè)模板(不在iPhone OS分類里而是在Mac OS X分類)直接創(chuàng)建項(xiàng)目,取個(gè)名字,
直接編譯,成功。
建議你使用本文的方法編譯toolchain,而不是直接下載別人編譯好的安裝包,這樣問(wèn)題會(huì)少很多。如果你下載了其他地方的例子,可能需要修改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
直接刪掉。
#p#
好了,這樣,你的開(kāi)發(fā)環(huán)境就搭建完了。真正全球第一款免復(fù)雜設(shè)置的iPhone ToolChain SDK 開(kāi)發(fā)編譯環(huán)境,一鍵式安裝,立即開(kāi)始使用,無(wú)須下載Toolchain源碼進(jìn)行復(fù)雜設(shè)置和變異,免除各種問(wèn)題困擾。
軟件主頁(yè):http://item.taobao.com/item.htm?id=5671586706
做過(guò)Jailbreak系統(tǒng)iPhone開(kāi)發(fā)的軟件開(kāi)發(fā)人員都知道,想要配置一套傳統(tǒng)的iPhone ToolChain 。
SDK編譯開(kāi)發(fā)環(huán)境要面對(duì)非常大的困難,并付出相當(dāng)多的精力,克服各種各樣的編譯錯(cuò)誤,最終才能完成;如果要更換計(jì)算機(jī)和系統(tǒng),重復(fù)的工作并不能減少錯(cuò)誤發(fā)生的可能,這一切都嚴(yán)重影響開(kāi)發(fā)者的精力和效率。
除此之外,傳統(tǒng)的iPhone ToolChain SDK無(wú)法在Snow Leopard(雪豹)MAC系統(tǒng)中編譯部署,使得很多高版本系統(tǒng)用戶無(wú)法使用iPhone
ToolChain SDK進(jìn)行iPhone軟件開(kāi)發(fā)。
現(xiàn)在好了,SJ99推出了免配置的iPhone ToolChain
SDK開(kāi)發(fā)包,開(kāi)發(fā)者再也不用手工下載各種繁多的底層模塊自行編譯部署了,一鍵式安裝瞬間即可完成,開(kāi)發(fā)者立即可以開(kāi)始iPhone軟件本身的設(shè)計(jì)和研發(fā)工作,大大節(jié)省了時(shí)間和精力。 有了這套開(kāi)發(fā)包,您可以在MAC系統(tǒng)中開(kāi)發(fā)基于iPhone
ToolChain第三方開(kāi)發(fā)庫(kù)的應(yīng)用程序,并將軟件部署到JailBreak的iPhone設(shè)備中運(yùn)行。
小結(jié):Leopard中搭建iPhone toolchain環(huán)境并整合到XCode的內(nèi)容介紹完了,希望本文對(duì)你有所幫助!
【編輯推薦】