Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4611475
  • 博文数量: 385
  • 博客积分: 21208
  • 博客等级: 上将
  • 技术积分: 4393
  • 用 户 组: 普通用户
  • 注册时间: 2006-09-30 13:40
文章分类

全部博文(385)

文章存档

2015年(1)

2014年(3)

2012年(16)

2011年(42)

2010年(1)

2009年(2)

2008年(34)

2007年(188)

2006年(110)

分类: LINUX

2008-01-20 18:29:11

使用  crosstool 制作arm-linux交叉编译链4.1.0
  
crosstool是个不错的软件,能够很方便的编译自己的交叉编译环境
crosstool-0.43 :

我们要编译的环境为 gcc-4.1.0-glibc-2.3.2
 
 
配置crosstool
1)arm.dat:
  
  [root@linux-58 crosstool-0.43]# cat arm.dat
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-linux             #交叉编译软件的前缀,如arm-linux-gcc
TARGET_CFLAGS="-O"
 
2)demo-arm.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=/phydisk/arm_toolchain/downloads     #下载的软件包存放的地址
RESULT_TOP=/phydisk/arm_toolchain/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 arm.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest
#eval `cat arm.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-2.95.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.3.6-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.1.0-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh --notest
eval `cat arm.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest     #这是我们要编译的交叉环境的版本

echo Done.
3) gcc-4.1.0-glibc-2.3.6-tls.dat

[root@linux-58 crosstool-0.43]# cat gcc-4.1.0-glibc-2.3.6-tls.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
GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread  --enable-kernel=2.4.18"
 

 
 4)最后在用户模式下执行demo-arm.sh就可以了
./demo-arm.sh

总结:
 
1)基本的过程就这么多, 但要说一下
编译前需要下载一些软件到$TARBALLS_DIR之下 ,不下载也行,crosstool 会自动帮你下载,
我嫌crosstool用wget下载速度慢,用flashget在window下载后传到linux系统中。
binutils-2.16.1.tar.bz2  glibc-linuxthreads-2.3.2.tar.bz2
binutils-2.17.tar.gz     glibc-linuxthreads-2.3.6.tar.bz2
gcc-3.3.6.tar.bz2        glibc-linuxthreads-2.3.6.tar.gz
gcc-4.1.0.tar.bz2        linux-2.6.15.4.tar.bz2
gdb-6.5.tar.bz2          linux-libc-headers-2.6.12.0.tar.bz2
glibc-2.3.2.tar.bz2     
glibc-2.3.6.tar.gz  
2)制作交叉编译链的方法还有二种,
一种网上的一步一步地编译 ,
一种是用<> 这样一个脚本 ,我在使用之中出错,没有成功。

3)相比较而言,使用crosstool这个工具是最简单的,不过时间挺长的,那个脚本足足花费了5个小时才结束。
 
阅读(6240) | 评论(4) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2009-09-14 17:32:17

楼上的我为什么没成功呀

chinaunix网友2009-09-14 17:32:17

楼上的我为什么没成功呀

todaygood2008-01-27 18:45:38

做完了以后,发现用该toolchain compile linux kernel 出问题,compile busybox也出问题,看来做得不成功。 下次有时间再试试。

todaygood2008-01-27 18:45:38

做完了以后,发现用该toolchain compile linux kernel 出问题,compile busybox也出问题,看来做得不成功。 下次有时间再试试。