歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Ubuntu上構築iPhone OS3.1.2開發環境

Ubuntu上構築iPhone OS3.1.2開發環境

日期:2017/2/28 16:37:39   编辑:Linux教程

在建立編譯環境前,請先下載好所需的SDK和Firmware文件:

iPhone1,2_3.1.2_7D11_Restore.ipsw
http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-7265.20091008.Xsd32/iPhone1,2_3.1.2_7D11_Restore.ipsw
iphone_sdk_3.1.2_with_xcode_3.1.4__leopard__9m2809.dmg
http://shuqun.com/files/iphone_sdk_3.1.2_with_xcode_3.1.4__leopard__9m2809.dmg
我的Linux HOST環境為Ubuntu 9.10(Karmic Koala),在這裡利用iphonedevonlinux建立toolchain。

首先配置好編譯所需的HOST環境,在終端中輸入以下命令:

1 sudo apt-get install automake bison cpio flex g++ g++-4.3 g++-4.3-multilib gawk gcc-4.3 git-core gobjc-4.3 gzip libbz2-dev libcurl4-openssl-dev libssl-dev make mount subversion sudo tar unzip uuid uuid-dev wget xar zlib1g-dev

點擊這裡獲取iphonedevonlinux源代碼:

1 $ mkdir -p ~/iphone/toolchain

2 $ cd ~/iphone/toolchain

3 $ svn checkout http://iphonedevonlinux.googlecode.com/svn/trunk/ ./

目前checkout out的svn版本為83。

拷貝SDK,firmware文件到相應目錄:

1 $ mkdir -p ~/iphone/toolchain/files/firmware

2 $ mv ./iphone_sdk_3.1.2_with_xcode_3.1.4__leopard__9m2809.dmg ~/iphone/toolchain/files/

3 $ mv ./iPhone1,2_3.1.2_7D11_Restore.ipsw ~/iphone/toolchain/files/firmware/

手動設置密匙,注釋掉toolchain.sh中下載密匙的代碼:

1 $ gedit ~/iphone/toolchain/toolchain.sh
01 unzip -d "${TMP_DIR}" -o "${FW_FILE}" "${FW_RESTORE_SYSTEMDISK}"

02

03 #if [ -z "$DECRYPTION_KEY_SYSTEM" ] ; then

04 #echo "We need the decryption key for `basename $FW_RESTORE_SYSTEMDISK`."

05 #echo "I'm going to try to fetch it from $IPHONEWIKI_KEY_URL...."

06 #

07 #IPHONEWIKI_KEY_URL=$( wget --quiet -O - $IPHONEWIKI_KEY_URL | awk '

08 #BEGIN { IGNORECASE = 1; }

09 #/name="'${DEVICE}'/ { found_phone=1; }

10 #/.*'${TOOLCHAIN_VERSION}'.*/ && found_phone { found_firmware=1; }

11 #/.*href=.*/ && found_firmware { while(sub(/href=|"/,"", $3));; print $3; exit;}

12 #')

13

14 #DECRYPTION_KEY_SYSTEM=`wget --quiet -O - "http://www.theiphonewiki.com"$IPHONEWIKI_KEY_URL | awk '

15 #BEGIN { IGNORECASE = 1; }

16 #/.*VFDecrypt.*/ { print $3;}

17 #'`

18

19 DECRYPTION_KEY_SYSTEM="a8a886d56011d2d98b190d0a498f6fcac719467047639cd601fd53a4a1d93c24e1b2ddc6"

20

21 if [ ! "$DECRYPTION_KEY_SYSTEM" ] ; then

我們可以利用

1 $ sudo ./toolchain.sh all

自動編譯toolchain,但容易出現很多問題。這裡我們采用手動一步步編譯:

1 $ sudo./toolchain.sh headers

2 $ sudo./toolchain.sh firmware

3 $ sudo./toolchain.sh darwin_sources

4 $ sudo./toolchain.sh build

一般來說前三步都不會出現什麼問題。(有問題請留言)

最後一步toolchain.sh build中會報錯,這時打開~/iphone/toolchain/toolchain/bld/cctools-iphone/make.log,搜索”error:”,在報錯的文件中加上:

1 #include <stdio.h>

2 #include <stdlib.h>

以下是我修改的文件:
ArchiveReader.hpp MachOReaderDylib.hpp MachOWriterExecutable.hpp OpaqueSection.hpp ld.cpp Options.cpp

重新build即可。注意不要重新checkout代碼,不然又要重改一遍。。。

如果出現”It seems like the toolchain built!”,說明toolchain build成功。

之後可以利用apps下的代碼測試下toolchain,一般會遇到兩個問題:

1. 找不到編譯器 arm-apple-darwin9-gcc

在~/.bashrc中添加環境變量即可

1 $ sudo gedit ~/.bashrc

增加export PATH=~/iphone/toolchain/toolchain/pre/bin:$PATH

2. 提示”ld: library not found for -lobjc”

拷貝以下目錄到編譯器庫中:

1 mv ~/iphone/toolchain/toolchain/sys/System ~/iphone/toolchain/toolchain/sys/System2

2 mv ~/iphone/toolchain/toolchain/sys/usr/lib ~/iphone/toolchain/toolchain/sys/usr/lib2

3 cp ~/iphone/toolchain/sdks/iPhoneOS3.1.2.sdk/System ~/iphone/toolchain/toolchain/sys/

4 cp ~/iphone/toolchain/sdks/iPhoneOS3.1.2.sdk/usr/lib ~/Projects/iphone/toolchain/toolchain/sys/usr/

Copyright © Linux教程網 All Rights Reserved