如何在Ubuntu10.04上搭建iPhone开发环境呢?下文给出了详细的描述,具体内容如下所述。
1.准备Ubuntu环境
Ubuntu10.04
- sudoapt-getinstallgit-corelibxar-devbisonflexpatchopenssllibbz2-devlibssl-devautoconf
- sudoapt-getinstallbuild-essentialgnustepgobjcgnustep-makelibgnustep-base-devgnustep-develuuid
gcc,g++等编译器默认已经安装
- sudoapt-getinstallg++
Ubuntu10.04amd64:
在64位系统上,apt-get找不到xar,就从网站上下载xar安装,要先安装依赖文件libxar1,再安装xar
http://packages.Ubuntu.com/hardy/xar
2.准备SDK和iPhoneFireware文件
2.1
- 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
2.2
iphone_sdk_3.1.2_with_xcode_3.1.4__leopard__9m2809.dmg
3.准备iphonedevonlinux源代码、SDK和firmware文件
3.1 checkoutiphonedevonlinux源代码
- $mkdir-p~/iPhone/toolchain
- $cd~/iPhone/toolchain
- $svncheckouthttp://iphonedevonlinux.googlecode.com/svn/trunk/./
目前checkoutout的svn版本为revision83
3.2 拷贝SDK,firmware文件到相应目录
- $mkdir-p~/iPhone/toolchain/files/firmware
- $mviphone_sdk_3.1.2_with_xcode_3.1.4__leopard__9m2809.dmg~/iPhone/toolchain/files/
- $mviPhone1,2_3.1.2_7D11_Restore.ipsw~/iPhone/toolchain/files/firmware/
4.执行toolchain.sh
4.1 sudo./toolchain.shheaders
4.2 sudo./toolchain.shfirmware
由于GFW的原因,这一步可能不成功。如果失败了,就手工修改toolchain.sh,直接添加解密firmware的key
修改toolchain.sh如下:
注视掉以下内容:
- if[-z"$DECRYPTION_KEY_SYSTEM"];then
- #echo"Weneedthedecryptionkeyfor`basename$FW_RESTORE_SYSTEMDISK`."
- #echo"I'mgoingtotrytofetchitfrom$IPHONEWIKI_KEY_URL...."
- #
- #IPHONEWIKI_KEY_URL=$(wget--quiet-O-$IPHONEWIKI_KEY_URL|awk'
- #BEGIN{IGNORECASE=1;}
- #/name="'${DEVICE}'/{found_phone=1;}
- #/.*'${TOOLCHAIN_VERSION}'.*/&&found_phone{found_firmware=1;}
- #/.*href=../../.*/&&found_firmware{while(sub(/href=|"/,"",$3));;print$3;exit;}
- #')
- #
- #DECRYPTION_KEY_SYSTEM=`wget--quiet-O-"http://#www.theiphonewiki.com"$IPHONEWIKI_KEY_URL|awk'
- #BEGIN{IGNORECASE=1;}
- #/.*VFDecrypt.*/{print$3;}
- #'`
- DECRYPTION_KEY_SYSTEM="a8a886d56011d2d98b190d0a498f6fcac719467047639cd601fd53a4a1d93c24e1b2ddc6"
- if[!"$DECRYPTION_KEY_SYSTEM"];then
- error"Sorry,nodecryptionkeyforsystempartitionfound!"
- exit1
- fi
- echo"Ifoundit!"
- fi
- message_status"Mounting${FW_RESTORE_SYSTEMDISK}..."
- mount_dmg"${TMP_DIR}/${FW_RESTORE_SYSTEMDISK}""${MNT_DIR}""${DECRYPTION_KEY_SYSTEM}"
别忘了添加DECRYPTION_KEY_SYSTEM=...这一行
4.3sudo./toolchain.shdarwin_sources
4.4sudo./toolchain.shbuild
在这一步会出错,我遇到两个文件需要修改:
- /home/jack/iPhone/toolchain/toolchain/src/cctools/ld64/src/MachOWriterExecutable.hpp:2222:error:‘sprintf’wasnotdeclaredinthisscope
- /home/jack/iPhone/toolchain/toolchain/src/cctools/ld64/src/Options.cpp:3160:error:‘fprintf’wasnotdeclaredinthisscope
查看~/iPhone/toolchain/toolchain/bld/cctools-iphone/make.log文件,找到编译出错的文件,添加下面两行:
#include
#include
然后再次执行sudo./toolchain.shbuild,注意在提示是否checkout时,选择"n",patch也选择"n"
如果出现”Itseemslikethetoolchainbuilt!”,说明toolchainbuild成功。
5.测试toolchain
5.1设置PATH、
在~/.bashrc中加入:
- PATH=~/iphone/toolchain/toolchain/pre/bin:$PATH
5.2编译HelloToolchain
- cd~/iPhone/toolchain/app/HelloToolch
执行IP=192.168.1.3makedeploy,其中IP是iPhone手机的IP地址,前提是已经越狱,并且通过ssh能够进行访问
在手机上可以看到HelloToolchain的应用,点击执行后在手机上显示出“HelloToolchain”
如果编译出错,进行如下处理:
- mv~/iPhone/toolchain/toolchain/sys/System~/iPhone/toolchain/toolchain/sys/System2mv~/iPhone/toolchain/toolchain/sys/usr/lib~/iPhone/toolchain/toolchain/sys/usr/lib2cp~/iPhone/toolchain/sdks/iPhoneOS3.1.2.sdk/System~/iPhone/toolchain/toolchain/sys/cp~/iPhone/toolchain/sdks/iPhoneOS3.1.2.sdk/usr/lib~/iPhone/toolchain/toolchain/sys/usr/
6.参考
1. installldid
- You'llneedldidtosignyourcode,youcangetitontheiPhonebydoing:
- $sudoapt-getinstallldid
- Here'showtogetitonLinux/OXS:
- First,downloadfromsaurik'swiththis:
- $wgethttp://www.linuxidc.com/system/systemfiles/2011/03/ldid-1.0.610.tgz
- Now,Unzipit:
- $tar-zxfldid-1.0.610.tgz
- Movetotheresultfolder:
- $cdldid-1.0.610
- Compileit:
- $g++-I.-outil/ldid{,.cpp}-xcutil/{lookup2,sha1}.c
- exportCODESIGN_ALLOCATE=.../toolchain/pre/bin/arm-apple-darwin9-codesign_allocate;ldid-Syourlib
总结:
看完本文后,大家是不是也学会了在Ubuntu10.04上搭建iPhone环境了呢。好了,大家赶紧自己动手操作一下吧。更多有关linux系统的知识还有待于读者去探索和学习。
【编辑推荐】
- 关于Ubuntu LUA安装环境详解
- Ubuntu10.10如何取消交换设备?
- Ubuntu 11.10 beta1十大功能图解
- 教大家把Ubuntu界面改造成Windows7系统
- Ubuntu10.04上如何搭建iPhone开发环境? 【责任编辑:韩亚珊 TEL:(010)68476606】