debian下交叉编译环境的建立

假设在amd64上要编译mipsel的文件。具体步骤如下:

1.建立amd64的binutils和gcc包, 这个包是amd64的可执行文件, 生成代码是mipsel的。
 只要
echo mipsel >debian/target
然后照常编译deb包,就可以生成了:
dpkg-buildpackage -b -uc -us

当然一些依赖包还是照常要装的:
aptitude build-dep gcc-4.6

最后生成的包的文件名类似于:
dpkg -i ../binutils-mipsel-linux-gnu_xxx_amd64.deb

有了合适的gcc和binutils还要有mipsel的目录结构,库文件等, 可以直接用mipsel的相应的包, 当然不能直接安装。 要转换成all的包 :

dpkg-cross -a mipsel -b *mipsel.deb

对于一些提示" Skipping Multi-Arch package "不能转换的包, 可以带 -M参数试试

最后生成的是类似于这样的
linux-libc-dev-mipsel-cross_2.6.39-13_all.deb


然后安装它, 会被安装到 /usr/mupsel-linux-gnu目录下。  gcc和binutils会直接使用他们。

至于需要转换哪些包, 看你的程序的需要, libc的dev之类的当然是必须的。


调用gcc编译mipsel的命令是:
mipsel-linux-gnu-gcc -static hello.c -o hello

要编译内核, 只要建立环境变量
CROSS_COMPILE=mipsel-linux-

然后直接 make vmlinuz 或者

fakeroot make-kpkg  --initrd --append-to-version=-loongson-2f-anheng --revision=`date +%Y%m%d`