在ubuntu8.04环境下建立powerpc的交叉编译环境:
参考风雷的步骤,中间出现了几个错误,记录在此。
1、从下面的网址下载crosstool源文件crosstool-0.43.tar.gz.http://kegel.com/crosstool/crosstool-0.43.tar.gz
2、将crosstool-0.43.tar.gz解压到/tmp目录下,然后进入目录/tmp/crosstool-0.43/
3、编辑demo-powerpc-405.sh,使内容变成如下所示
#!/bin/sh
# This script has one line for each known working toolchain
# for this architecture. Uncomment the one you want.
# Generated by generate-demo.pl from buildlogs/all.dats.txt
set -ex
TARBALLS_DIR=/home/maximus/downloads//////////下载的源文件放置的位置
RESULT_TOP=/opt/crosstool////////////////////////////////编译好的工具链放置的位置
export TARBALLS_DIR RESULT_TOP
GCC_LANGUAGES="c,c++"
export GCC_LANGUAGES
# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you don't need to run as root.
mkdir -p $RESULT_TOP
#eval `cat powerpc-405.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.3.6-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.3.6-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat powerpc-405.dat gcc-4.1.0-glibc-2.3.5.dat` sh all.sh --notest
eval `cat powerpc-405.dat gcc-4.1.0-glibc-2.3.6.dat` sh all.sh --notest///////设置使用的gcc以及glibc的版本
echo Done.
4、在/opt目录下新建目录,并将其所有权修改为当前用户,如此我们可以使用普通用户执行下面的操作而拥有所有的权限
sudo mkdir /opt/crosstool
chown maximus /opt/crosstool
5、执行sh demo-powerpc-405.sh,首先脚本将会从网络上下载相应的源文件,然后进行编译。下载的速度是与网速息息相关的,由于实验室的网速并不好。我选择先下载相应的文件,存放到/home/maximus/downloads目录下,然后再执行上面的 命令。具体的对应的版本,可以打开gcc-4.1.0-glibc-2.3.6.dat查看。内容如下
BINUTILS_DIR=binutils-2.16.1
GCC_CORE_DIR=gcc-3.3.6
GCC_DIR=gcc-4.1.0
GLIBC_DIR=glibc-2.3.6
LINUX_DIR=linux-2.6.15.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6
GDB_DIR=gdb-6.5
我下载的文件为binutils-2.16.1.tar.bz2,gcc-3.3.6.tar.bz2,gcc-4.1.0.tar.bz2,glibc-2.3.6.tar.bz2,linux-2.6.15.4.tar.gz,linux-libc-headers-2.6.12.0.tar.bz2,glibc-linuxthreads-2.3.6.tar.bz2。放置到/home/maximus/downloads目录中。
下面的这几个设置是参照网上的其他人的经验设置的,其中我出现了第九个错误,就没有再执着下去了。直接按照他的解决方法把这些东西都安装了然后直接运行sh demo-powerpc-405.sh完后就done了。
6、先unset LD_LIBRARY_PATH,至于为什么,笔者猜测是由于 LD_LIBRARY_PATH 环境变量通常都是由安装程序修改为包括相关库所在的目录,估计是编译环境时不能受已有库的影响,要在编译过程中临时给LD_LIBRARY_PATH 一个值,编译完成之后再改回来。
7、 安装语法分析程序生成器bison/flex,执行apt-get install bison flex
8、将/bin/sh的连接对象从dash改为bash,这是由于我选择的glibc-2.3.6和dash有bug冲突。就算你不是用的glibc-2.3.6,也建议修改。先用ls -la /bin/sh看看你的sh链接到底是什么。如果是dash,就要通过sudo ln -sf /bin/bash /bin/sh来更改。
9、提示什么 PATCH XXXXXXXXXXXX (这个记录没有保留)
原因是因为 ubuntu8.04 没有安装patch软件包,运行: sudo apt-get install patch后。进行第二次运行。
10、结果:提示 configure: error: installation or configuration problem: C compiler cannot create executables.
原因是因为没有安装:libc6-dev,运行: sudo apt-get install libc6-dev
11、输出路径export PATH=/tmp/crosstool/gcc-4.1.0-glibc-2.3.6/powerpc-405-linux-gnu/bin:$PATH,就可以在任何目录下使用下面的命令。但是这种方法添加路径,每次关闭终端路径都会丢失,比较麻烦。我们可以使用root权限打开/etc/bash.bashrc,在最后一行添加export PATH=/opt/crosstool/gcc-4.1.0-glibc-2.3.6/powerpc-405-linux-gnu/bin:$PATH,这样,路径就会在每次开机的时候自动进行加载。
maximus@maximus-desktop:/tmp/crosstool-0.43$ powerpc-405-linux-gnu-gcc -v
Using built-in specs.
Target: powerpc-405-linux-gnu
Configured with: /tmp/crosstool-0.43/build/powerpc-405-linux-gnu/gcc-4.1.0-glibc-2.3.6/gcc-4.1.0/configure --target=powerpc-405-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/tmp/power/powerpc-405-linux --with-cpu=405 --enable-cxx-flags=-mcpu=405 --with-headers=/tmp/power/powerpc-405-linux/powerpc-405-linux-gnu/include --with-local-prefix=/tmp/power/powerpc-405-linux/powerpc-405-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-languages=c,c++ --enable-shared --enable-c99 --enable-long-long
Thread model: posix
gcc version 4.1.0
可以看出我们的检查编译环境已经建好了。