Chinaunix首页 | 论坛 | 博客
  • 博客访问: 36337
  • 博文数量: 16
  • 博客积分: 1425
  • 博客等级: 上尉
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2008-07-06 15:00
文章分类

全部博文(16)

文章存档

2011年(1)

2010年(5)

2009年(4)

2008年(6)

我的朋友

分类: 嵌入式

2009-11-23 18:07:44

                ubuntu8.04下用crosstool-0.43制作自己的arm交叉编译环境
1。怕出错,先确定bison,flex,patch装好没有。   在地址 可以下载 crosstool-0.43。   下载下列文件放在/home/jettlau/downloads: binutils-2.16.1.tar.bz2 ftp://ftp.gnu.org/gnu/binutils/binutils-2.16.1.tar.bz2 gcc-3.3.6.tar.bz2          ftp://ftp.ntu.edu.tw/pub/gnu/gnu/gcc/gcc-3.3.6/gcc-3.3.6.tar.bz2
gcc-4.1.0.tar.bz2          ftp://ftp.ntu.edu.tw/pub/gnu/gnu/gcc/gcc-4.1.0/gcc-4.1.0.tar.bz2 glibc-2.3.2.tar.bz2        ftp://ftp.ntu.edu.tw/pub/gnu/gnu/glibc/glibc-2.3.2.tar.bz2
linux-2.6.15.4.tar.bz2   ftp://ftp.kernel.org/pub/linux/kernel/v2.6/linux-2.6.15.4.tar.bz2
linux-libc-headers-2.6.12.0.tar.bz2 ~mmazu ... rs-2.6.12.0.tar.bz2
glibc-linuxthreads-2.3.2.tar.bz2     ftp://ftp.ntu.edu.tw/pub/gnu/gnu ... reads-2.3.2.tar.bz2
gdb-6.5.tar.bz2          ftp://ftp.ntu.edu.tw/pub/gnu/gnu/gdb/gdb-6.5.tar.bz2   解压crosstool-0.43后进入其目录: tar -xzvf crosstool-0.43.tar.gz cd crosstool-0.43
2.  接着就选择自己希望的模板,这儿是以arm9做试验玩,因此选择了 demo-arm9tdmi.sh 做模板。 cat demo-arm.sh。当然可以COPY个改名字。 可以看到
#!/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.txtset-ex
TARBALLS_DIR=/home/jettlau/downloadRESULT_TOP=/home/jettlau/crosstool ;不是crosstool-0.43文件夹
export TARBALLS_DIR RESULT_TOPGCC_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 arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh –notest
#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh –notesteval `cat arm9tdmi.dat gcc-4.1.1-glibc-2.3.2.dat` sh all.sh –notestecho Done. 其中红色字为自己修改的地方,看最后一个红色的行,表示我们要编译 gcc 4.1.1 的。

3.cat arm9tdmi.dat 可以看到
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-9tdmi-linux-gnu
GCC_EXTRA_CONFIG=”–with-cpu=arm9tdmi –enable-cxx-flags=-mcpu=arm9tdmi”
TARGET_CFLAGS=”-O” 其中红色的文字可以根据自己的需要做修改,一般是 arm-linux ,符合网上面很多编译情形的。
4。cat gcc-4.1.1-glibc-2.3.2.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.2
LINUX_DIR=linux-2.6.15.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
GDB_DIR=gdb-6.5
GLIBC_EXTRA_CONFIG=”$GLIBC_EXTRA_CONFIG –with-tls –with-__thread –enable-kernel=2.4.18″
5.是不是有点急着想编译啦。不过还有几个步骤没做呢。还是修改文件。重要的很啦,不然编了半个小时跳出个错误,气人啦!!! 解压 glibc-2.3.2.tar.bz2 找到glibc-2.3.2/csu 目录下的Makefile 按如下修改 文件末尾有2处
echo echo "\"Compiled on a $$os $$version system" \ "on `date +%Y-%m-%d`.\\n\"" ;; \
改为: echo "\"Compiled on a $$os $$version system" \ "on `date +%Y-%m-%d`.\\\\n\"" ;; \
echo "\"Available extensions:\\n\"";
改为: echo "\"Available extensions:\\\\n\"" \ 保存并重新压缩为glibc-2.3.2.tar.bz2 覆盖原来download目录下的glibc-2.3.2.tar.bz2
*******
ubuntu8.04自带的是gcc-4.3.2无法用crosstool正常编译交叉编译器,所以必须安装gcc-4.1,但是不必卸载4.3.2。方法是用新立得软件包管理器安装gcc-4.1,
再 sudo rm /usr/bin/gcc            (删除GCC,它只是个到gcc-4.3.2的软连接文件)
sudo ln -s /usr/bin/gcc-4.1 /usr/bin/gcc       
(建立GCC到gcc-4.1的软连接)
******
当然你也要检查下你的SHELLls -la /bin/sh 命令看到/bin/sh其实是一个指向dash的软链接,则请运行以下命令,将/bin/sh链接到bash。
sudo mv /bin/sh /bin/sh.old
 sudo ln -sf bash /bin/sh
6。所有的准备工作都做好了,现在准备等了,呵呵在crosstool-0.43主目录下输入./demo-arm.sh别忘了回车。哈哈!!!!你就等它
echo Done
Done
7,修改 /etc/environment 文件PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/skyeye:/usr/local/arm/2.95.3/bin:/home/jettlau/crosstool-4.1.1/gcc-4.1.1-glibc-2.3.2/arm-9tdmi-linux-gnu/bin"
大功告成!!!!我是新手,很多东西都是参照大虾们的。大虾们,看到和你的文章有相同的地方,请宽恕。实在不行告诉我,我第一时间处理。
阅读(1029) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~