第一天

首先确定自己的需求:Host为 i386, Linux; Target为 powerpc, Linux。本来想使用 i386/cygwin 作为host,但是觉得实在难度太大,反正我还有一台Linux主机闲置,就先做成 i386/Linux的host吧。

必不可少的自然是查找相关资料了。找来找去最后找到了这个网站:

根据该网站的介绍,建立交叉编译环境需要四个步骤:

  1. 建立生成目标代码的binutils;
  2. 建立生成目标代码的 gcc 框架;
  3. 建立运行库;
  4. 生成最终的 gcc。

首先将必须的软件包下载。好在 binutils、gcc、glibc 都可以在 http://ftp.gnu.org/gnu/ 下找到,不算很麻烦。最新版本分别为 binutils-2.16、gcc-4.0.0、glibc-2.3.5。另外别忘了同时下载 glibc-linuxthreads。另外,编译 gcc 时需要用到内核头文件,所以顺便将最新的内核下载。最新版本为 2.6.11.11,位于 http://www.kernel.org/ 。

然后在 Host 上建立工作目录,并在其中为最后生成的交叉编译工具建立目录:

$ cd /home/charlee
$ mkdir -p cross/tools

最后将下载的软件全部复制到 cross 目录中并解压缩。

$ cd /home/charlee/cross
$ tar xzvf binutils-2.16.tar.gz
$ tar xzvf glibc-2.3.5.tar.gz
$ tar xzvf glibc-linuxthreads-2.3.5.tar.gz
$ tar xjvf gcc-4.0.0.tar.bz2
$ tar xjvf linux-2.6.11.11.tar.bz2

然后设置环境变量以方便以后的工作:

$ export TARGET=powerpc-kurobox-linux-gnu
$ export PREFIX=/home/charlee/cross/tools

下面开始编译 binutils。binutils的说明文件中建议不要在binutils的源码目录中进行编译,所以我们为它建立编译目录,并进行配置和编译。

$ cd /home/charlee/cross
$ mkdir binutils-build
$ cd binutils-build
$ ../binutils-2.16/configure --target=$TARGET --prefix=$PREFIX
$ make all install

安装结束之后,就可以在 /home/charlee/cross/tools 目录下看到开发工具了。