首发,WeiPhone威锋网
by weity 2009-03-20 转载请注明 作者!!
本文来自互联网,整理,编辑
前提说明:
1.本文很少图片
2.本文也参考很多其他网站
3.本文用到的软件有
- cygwin
- iPhone越狱的包(iPhone1,2_2.2_5G77_Restore.ipsw)
- 查看dmg文件的 PowerISO 4.4
- emeditor 文本编辑
4.本文最后需要编译iphone-2.0-toolchain,需要花费很长时间,大概在2个小时左右。视个人电脑性能而定。
下面是安装步骤
1.首先,拥有一台越狱的iPhone
要求必须安装以下软件:
<!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->
- OpenSSH
- iPhone 2.0 toolchain
- 以及可以启动SSH和SpringBoard 的BossPrefs
2.其次,安装cygwin
这个不过多说了,网络上有很多教程。也可以参考我的另外一篇文章(未定)。
这里简单提一下 需要的几个pkg。
Devel 下的
autoconf, binutils, bison, flex, gcc-code, gcc-g++, make
Net下的
openssh 和 openssl
启动cygwin之后,会在home下建立一个 电脑名字的文件夹,例如:pc101010
以后无特殊说明,需要拷贝到cygwin下的文件都指向 那里。
3.接下来是很重要的一步,iPhone 2.0 Toolchain 安装
下载文件:http://www.pjtrix.com/iphone/articles/eclipse-cdt/iphone-2.0-toolchain.tgz
放在C:/cygwin/home/pc101010/iphone-2.0-toolchain.tgz.gz 下
接下来是解压缩
启动 cygwin 然后输入
cd ~
tar xzvf iphone-2.0-toolchain.tgz.gz
这个过程,如果用windows下的rar处理的话,大概要5分钟,而且还有错误,不推荐。
Cygwin下大概2分钟。
接下来我们需要从 iPhone 2.0的firmware里面提取一些文件出来。
这里,我使用的是越狱时候用到的固件,iPhone1,2_2.2_5G77_Restore.ipsw
把ipsw 改为zip就可以解压缩了。
然后找到文件size最大的一个文件,018-4380-1.dmg 大概192M。
由于dmg文件经过了加密,所以,我们使用iphone-2.0-toolchain下的vfdecrypt.exe来解密。
启动 cygwin 然后输入
chmod u+x ~/iphone-2.0-toolchain/src/vfdecrypt.exe
~/iphone-2.0-toolchain/src/vfdecrypt.exe -i ~/018-4380-1.dmg -o ~/decrypted.dmg -k /
dc39d88afe4cbd8a3f36824b8fd68acf04ac72718c09100816c5cb89889b8079e96802f0
这个密匙是从网络上找的,如果有其他版本需要的话可以来信向我寻找。
这个解密的过程非常快,不用担心,1秒之后,你的文件已经可以用了。
下面我们要提取dmg文件里面的部分内容,需要用到PowerISO这个软件。
用powerISO 打开 decrypted.dmg 文件
把下面路径下的文件拷贝到指定路径下
decrypted.dmg/usr/lib -->> C:/cygwin/home/pc101010/iphone-2.0-toolchain/iphone-fs/usr
decrypted.dmg/System/Library/Frameworks -->> C:/cygwin/home/pc101010/iphone-2.0-toolchain/iphone-fs/System/Library
decrypted.dmg/System/Library/PrivateFrameworks -->> C:/cygwin/home/pc101010/iphone-2.0-toolchain/iphone-fs/System/Library
4.然后,就是开始编译 iPhone 2.0 Toolchain 了,需要费时2小时左右。
在编译之前,我们还需要编辑 下面这个文件:
iphone-2.0-toolchain 路径下的 make-toolchain
建议备份一下,防止修改毁坏之后能恢复。
编辑1:把关于SUDO变量设定的地方 注释掉 (第19—24行)
例如:
#case "${OSTYPE}" in
#*win32*)
#*cygwin*)
# export SUDO='echo "";'
# ;;
#esac
编辑2:把 有关 $SUDO 的地方都删除掉 (共6处)
编辑3:追加一些 symlink ,如果不追加的话,build时候会出错。
在ln -sf libstdc++.6.0.4.dylib libstdc++.dylib 的下面
追加如下内容(共45行):
ln -sf ../../System/Library/Frameworks/IOKit.framework/Versions/A/IOKit libIOKit.A.dylib
ln -sf libIOKit.A.dylib libIOKit.dylib
ln -sf libSystem.B.dylib libSystem.dylib
ln -sf ../../System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libBLAS.dylib libblas.dylib
ln -sf libbz2.1.0.4.dylib libbz2.1.0.dylib
ln -sf libbz2.1.0.4.dylib libbz2.dylib
ln -sf libSystem.dylib libc.dylib
ln -sf ../../System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libBLAS.dylib libcblas.dylib
ln -sf libcharset.1.dylib libcharset.1.0.0.dylib
ln -sf libcharset.1.dylib libcharset.dylib
ln -sf ../../System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libLAPACK.dylib libclapack.dylib
ln -sf libncurses.5.dylib libcurses.dylib
ln -sf libSystem.dylib libdbm.dylib
ln -sf libSystem.dylib libdl.dylib
ln -sf libedit.2.dylib libedit.2.9.dylib
ln -sf libedit.2.dylib libedit.dylib
ln -sf libexslt.0.dylib libexslt.dylib
ln -sf libform.5.4.dylib libform.dylib
ln -sf libiconv.2.dylib libiconv.2.4.0.dylib
ln -sf libiconv.2.4.0.dylib libiconv.dylib
ln -sf libicucore.A.dylib libicucore.dylib
ln -sf libSystem.dylib libinfo.dylib
ln -sf libipsec.A.dylib libipsec.dylib
ln -sf ../../System/Library/PrivateFrameworks/Accelerate.framework/Frameworks/vecLib.framework/libLAPACK.dylib liblapack.dylib
ln -sf libSystem.dylib libm.dylib
ln -sf libncurses.5.dylib libncurses.dylib
ln -sf libobjc.A.dylib libobjc.dylib
ln -sf libSystem.dylib libpoll.dylib
ln -sf libSystem.dylib libproc.dylib
ln -sf libSystem.dylib libpthread.dylib
ln -sf libresolv.9.dylib libresolv.dylib
ln -sf libSystem.dylib librpcsvc.dylib
ln -sf libsqlite3.0.dylib libsqlite3.0.8.6.dylib
ln -sf libsqlite3.0.dylib libsqlite3.dylib
ln -sf libstdc++.6.0.4.dylib libstdc++.6.dylib
ln -sf libtidy.A.dylib libtidy.dylib
ln -sf libutil1.0.dylib libutil.dylib
ln -sf libxml2.2.dylib libxml2.dylib
ln -sf libxslt.1.dylib libxslt.dylib
ln -sf libz.1.2.3.dylib libz.1.dylib
ln -sf libz.1.2.3.dylib libz.dylib
ln -sf libz.1.dylib libz.1.1.3.dylib
追加完成之后保存文件,接下来我们可以编译iphone-2.0-toolchain了。
启动cygwin ,输入
cd ~/iphone-2.0-toolchain
./make-toolchain
这是一个漫长的过程,我们可以做一些其他的事情,大概要2个小时。
至此,cygwind的开发环境就准备好了,明天,我会放出 一个 helloworld的iPhone测试程序。
相信大家一定会满意的。