build iphone toolchain
今天尝试了一下iphone toolchain的安装
先是装了一个编译好的版本, 声称支持ppc
装的时候很顺利,就是要自己下载一个iphone filesystem
结果运行的时候报错, 说是cpu必须是x86
卸载之
按教程下载svn版本
编译安装,结果在./configure的时候失败,看log,发现原来是运行/usr/bin/ld的时候出错
file /usr/bin/ld,原来也是x86的版本,file /usr/bin/gcc发现还是universal binary format
看/usr/bin/ld的时间, 推算起来就是装那个toolchain的时间,看来那个包居然把系统的ld都改成自己的了
想了想似乎只能重装xcode才能恢复原来的文件, mount xcode.dmg
看到xcode里其实有分开的多个pkg文件,不过不知道是哪个包含ld
懒得挨个去试, 于是安装xcode 同时不断运行file /usr/bin/ld,最后发现是DeveloperToolsCLI这个包包含的ld. 完成之后再看ld已然是universal binary格式,对apple这个同时支持x86和ppc的技术很好奇, 有空研究研究, 目前先存疑
再去按教程编译, 在指定SDK的时候发现自己的leopard既有10.4的也有10.5的, 想了想,也许教程写的早了些没眼正过10.5的吧, 于是指定10.5的安装头文件, 前面出了一些错误滚动过去了, 结果在编译gcc的时候头文件又出错, 找不到arm下的OSByteOrder.h. 看来还要用10.4的SDK.
再重复上次动作, 换10.4 的SDK, 再编译gcc, 正常过去了
编译helloworld验证, 改arm-apple-darwin-cc为arm-apple-darwin-gcc, 编译找不到crt1.10.5.so, 发现上边漏了软连接crt1.so一步, 链接之, 再编译, 出undefined symbols错误
_objc_sendMsg, google之, 发现其实就在教程里的comments就有人遇到并解决了这个问题
加-lobjc.
按人家说的修改Makefile编译
上传到iphone上, ssh登录并运行, 没问题, 运行的很好.
下边的问题是我给iphone写个什么程序呢????