linux下最直接的方法就是标明--host=arm-linux 直接交叉编译,不过这种失败的可能性最大,因为configure在探测系统的时候可能会得到错误的值。
所以有一些工具可以协助交叉编译,scratchbox,scratchbox2, open embedded
- scratchbox比较简单,直接用chroot的方式改变root目录,然后模拟本地编译,用qemu模拟arm指令执行。gpephone很多人用的是scratchbox。
- scratchbox2 是另外一个实现,也是模拟本地编译。通过lua映射根文件系统,利用LD_PRELOAD调用crosstoolchain。不过感觉sbox2做得还不 是很好,默认它调用gcc会有一个--sysroot参数,但是4.0以下的gcc一般都是不支持的;另外感觉目录映射做得也不好,ls /usr是空的,但是如果mkdir /usr/share会说目录存在,没有权限之类。
- openembedded比较复杂。oe任务执行主要依靠bitbake,一个python写的脚本,本身也比较复杂。oe配置好以后,可以自动build整个系统,甚至生成image文件。openmoko用的就是OE。gpephone据说也可以用OE编译。
- 使用crosstools ?????????????
转自:http://hi.baidu.com/littertiger/blog/item/66008e1170d8037ccb80c4a5.html
阅读(611) | 评论(0) | 转发(0) |