为了写点程序在 DD-WRT (broadcom) 上跑,尝试了几种方案建立交叉编译环境,最后还是以最简单的方式满足了自己的需求。
1. 在 cygwin 里面搞交叉编译环境是很麻烦的,要下载源码自己编译,而且由于移植到 Windows 平台上,往往会出现一些奇怪的小问题,不推荐。
2. 我曾经打算直接在路由器上交叉编译,不是不可以,麻烦,速度极慢,不推荐。
3. 其实我只是在 VMWare 里安装了一个 Ubuntu 9.04, 然后下载编译好的 open-wrt toolchain 解压出来就可以直接编译了 http://www.dd-wrt.com/dd-wrtv2/downloads/others/sourcecode/toolchains/gcc.3.4.4-broadcom-mipsel.tar.bz2
4. 安装 MIPS 模拟器
sudo apt-get install qemu
qemu-mipsel -L /home/steeven/work/dd-wrt/home/dd-wrt/whiterussian/openwrt/staging_dir_mipsel/ test
在我的 Ubuntu 上
qemu-mipsel -L /home/felix/opt/openwrt/ hellofile
很多文章写得很复杂,这时候要理清楚,几个概念,编译器要运行的平台,编译器编译出来的目标文件要运行的平台。在你不熟悉交叉编译的时候很容易搞混,搞清楚以后觉得每篇文章写得都很清楚~~~。
附:
1. 给 Ubuntu 安装 openssh server,
Ubuntu 默认安装没有 ssh server, 需要手工安装
sudo apt-get install openssh-server
2. ubuntu 不能直接安装 rpm 包,比如我要装 VMWare Toolkit
sudo apt-get install alien #alien默认没有安装,所以首先要安装它
sudo alien xxxx.rpm #将rpm转换位deb,完成后会生成一个同名的xxxx.deb
sudo dpkg -i xxxx.deb #安装
3. 启动我们编译好的程序
i. 在 startup script 中启动就是守护进程方式的,和终端无关。
ii. 在终端里可以在命令后面加上 & 以后台进程方式运行, e.g. /opt/share/startme &
iii. 可以用 nohup Command [ Arg … ] [ & ] 运行。
本文来自:http://www.youwise.com/2009/06/cross-compile-on-ubuntu/