搭建开发环境的两种主流方法:
1.在苹果机上用xcode做开发
好处:可以使用一整套apple工具,常规路子就是这个。
2.使用第三方工具toolchain
好处:可以在windows和linux下开发。
坏处:无法debug
iPhone toolchain 4.0 介绍
⑴ 基于 iOS SDK 4.2, cctools 782 及 gcc 4.2.1
⑵ 支持 armv6 及 armv7
⑶ clang 支持 blocks
① 下载及安装 Ubuntu 桌面版 12.04 在虚拟机 (例如 VirtualBox, VMWare)
please make sure you use gcc-4.4 and g++-4.4 to compile cctools注意需要使用 gcc-4.4 (默认是4.6) 参见:https://github.com/javacom/toolchain4/wiki
sudo apt-get install gcc-4.4 g++-4.4 gobjc-4.4
sudo update-alternatives --remove-all gcc (若可能会提示没有候选,忽略之)
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.4 44 --slave /usr/bin/g++ g++ /usr/bin/g++-4.4 --slave /usr/bin/gcov gcov /usr/bin/gcov-4.4
② Ubuntu 更新及安装以下软件包
- sudo apt-get update
- sudo apt-get install bison flex build-essential wget patch
- sudo apt-get install git autoconf gawk libssl-dev libxml2-dev uuid-dev
③ 下载 更新toolchain4_v2.tgz (131.99M) 解压 (115 下载 : http://u.115.com/file/f39885f794)
- cd ~
- tar xzvf ~/Downloads/toolchain4_v2.tgz
注: toolchain4_v2.tgz 更新了支持 codesign_allocate 及 ldid
④ 安装头文件及编译 toolchain4
- cd ~/toolchain4
- ./toolchain.sh xar
- ./toolchain.sh buildsys
- ./toolchain.sh cctools
- ./toolchain.sh llvmgcc
- ./toolchain.sh ldid
第三步会有error, 解决办法:
if you get the print_objc.c for error objc/objc_runtime.h not found add these to disable compilation in /toolchain4/src/cctools/otool/print_objc.c
注意:是将整个print_objc.c文件用下面的方法注释掉, 即清空fprintf_objc.h的所有内容
#if 0 .. ..#endif
There are lots of ld warning: bad symbol version: .... when compiling
To disable this, edit the source code of /toolchain4/src/cctools/ld64/src/MachOReaderDylib.hpp
and comment out this line
warning("bad symbol version: %s in dylib %s ...
Then rebuild cctools without downloading source again. (再次执行./toolchain.sh cctools时会让你选择)
⑤ 安装 as_driver
- cd ~/toolchain4/as_driver
- make
- cd /usr/bin
- sudo mv as i686-linux-gnu-as
- sudo cp -p ~/toolchain4/as_driver/as_driver as
- sudo ln -s ~/toolchain4/pre/bin/arm-apple-darwin9-as .
- sudo mv ld i686-linux-gnu-ld
- sudo cp -p ~/toolchain4/as_driver/as_driver ld
- sudo ln -s ~/toolchain4/pre/bin/arm-apple-darwin9-ld .
安装 clang
- sudo apt-get install clang
⑥ 测试编译 iOS 4 项目 (包含测试 blocks ^)
- cd ~/toolchain4/Projects/LocalPush
- make
- make dist
- (LocalPush.ipa 就在 build/4.0 文件夹内)
编译项目时,提示#include_next <stdarg.h>不见时,
替换成
#include </home/XXX/toolchain4/sdks/iPhoneOS4.2.sdk/usr/lib/gcc/arm-apple-darwin10/4.2.1/include/stdarg.h>绝对路径
包括后面出现的#include_next <float.h>,同样的方法解决。(按理说应该还有更好的解决办法,暂时就这样凑合了)
1. 此外有个不应该的错误:
make dist 出现下面的问题,
cp LocalPush-Info.plist ./build/4.0/LocalPush.app/Info.plist
export CODESIGN_ALLOCATE=~/toolchain4/pre/bin/arm-apple-darwin9-codesign_allocate; ~/toolchain4/prep/bin/ldid -S LocalPush
/bin/sh: /home/ne/toolchain4/prep/bin/ldid: not found
make: *** [dist] Error 127
查找发现ldid位于/home/ne/toolchain4/pre/bin/ldid
而不存在prep目录,所以出现上述错误,将
Makefile中的~/toolchain4/prep/bin/ldid -S LocalPush
修改为
~/toolchain4/pre/bin/ldid -S LocalPush
继续运行make dist.
注释: 出现这个问题是因为压缩包里面的例子楼主已经修改过makefile里面的一些路径,楼主可能没测试过就发布了吧,试试用官方的文件https://github.com/javacom/toolchain4
2. 当出现签名失败,
util/ldid.cpp(576): _assert(2:false)
util/ldid.cpp(581): _assert(0:WIFEXITED(status))
Trace/breakpoint trap
是makefile这句
export CODESIGN_ALLOCATE=$(TOOLCHAIN)/pre/bin/arm-apple-darwin9-codesign_allocate
没有正确执行所致(不清楚原因)
后来将
export CODESIGN_ALLOCATE=/home/XXX/toolchain4/pre/bin/arm-apple-darwin9-codesign_allocate
放入.bashrc文件,将makefile中这句去掉,然后注销账户重新登陆后就没问题了
LocalPush.ipa 安装在越狱后的 iPhone 真机测试~
⑦ BatteryStatus.zip 真机测试 BatteryStatus.zip (56 K) 下载次数:648
BatteryStatus 是苹果的示例源代码,我汉化了及修改可在 toolchain 编译
- cd BatteryStatus
- make
- make dist
- (BatteryStatus.ipa 就在 build/4.0 文件夹内)
BatteryStatus.ipa 安装在越狱后的 iPhone 真机测试
其他源代码 :
MPPlayer (MediaPlayer.framework) MPPlayer.zip (388 K) 下载次数:426
下列下载地址均失效,最新: http://code.google.com/p/ios-devel/downloads/list 建议使用4.3试下
The pkg files should be put in /toolchain4/sdks/
If you want to ./toolchain.sh buildsys
Download iPhoneSDK4_2.pkg here orhere
If you want to ./toolchain.sh buildsys50
Download iPhoneSDK5_0.pkg here orhere
If you want to ./toolchain.sh buildsys43
Download iPhoneSDK4_3.pkg here orhere
If you want to ./toolchain.sh build313
Download iPhoneSDKHeadersAndLibs.pkg (that is iPhoneSDK3.1.3) here or here
Download MacOSX10.5.pkg here orhere
If you want to ./toolchain.sh build32
Download iPhoneSDKHeadersAndLibs_32.pkg (that is iPhoneSDK3.2) here or here
and MacOSX10.5.pkg
Old iPhone SDKs (requires developer account login)
iPhone SDK 3.1.3 with XCode 3.2.1 for Snow Leopard (requires 10.6.0)
iPhone SDK 3.2 Final with Xcode 3.2.2 for Snow Leopard (requires 10.6.0)
Xcode 3.2.3 and iPhone SDK 4 Final for Snow Leopard (requires 10.6.2)
Xcode 3.2.4 and iOS SDK 4.1 for Snow Leopard (requires 10.6.4)
Xcode 3.2.5 and iOS SDK 4.2 for Snow Leopard (requires 10.6.4)
Xcode 3.2.6 and iOS SDK 4.3.1 for Snow Leopard (requires 10.6.6)
----------------------------------------------------------------------------华丽丽的分割线-----------------------------------------------------------------------------------
一般搭建toolchain的朋友,肯定就已经看过了google的那篇搭建文章,原地址http://code.google.com/p/iphone-dev/wiki/Building,有兴趣的朋友可以去围观一下。
然后以下是我搭建toolchain遇到的问题和解决方法,向大家阐述一下。
我们跟着google原创的一起来。
。。。http://blog.youkuaiyun.com/califan/article/details/6250073
因为google的人一直没有对这篇文章进行维护,所以他提供的方法,其实大部分是基于iphone 2.0或以前的,但是现在基本上找不着还有开发2.0的人吧。。。。