Username: Password:

ARM Linux 交叉编译 工具链 制作攻略 (转)
来源: ChinaUnix博客  作者: ChinaUnix博客   发布时间:2008-01-01 10:45:00

ARM Linux 交叉编译 工具链 制作攻略

0、制作之前确保您的机子上有如下几个工具:bison             flex            build-essential。
build-essential主要是用于提供GCC、GLIBC等必要的编译资源,一般做研发的人员机子上应该都会有的。假如没有,对于UBUNTU用户:sudo apt-get install build-essential bison flex,其他用户自己看着办,呵呵!
1、从
http://kegel.com/crosstool
处下载crosstool-0.43.tar.gz并解开存于$HOME下。



假如您想要arm9tdmi上的工具链(其他工具链方法相同),进入crosstool-0.43目录,用文本编辑器打开demo-arm9tdmi.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/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 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 --notest
echo Done. //上面表示您要选工具链的版本号!"#"起注释功能!我们能够选择一行!
我把RESULT_TOP=/opt/crosstool改成RESULT_TOP=$HOME/toolchains,并在HOME目录下建立downloads 和toolchains两个目录,分别用于存放源码压缩包和将要生成的工具链。


打开crosstool-0.43目录下的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"

这个文档一般用于配置一些变量,一般不用改,用默认即可!


打开crosstool-0.43目录下的gcc-4.0.2-glibc-2.3.5-tls.dat文档,内容如下:

BINUTILS_DIR=binutils-2.16.1
GCC_DIR=gcc-4.0.2
GLIBC_DIR=glibc-2.3.5
LINUX_DIR=linux-2.6.15.4
LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.5
GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --with-tls --with-__thread           --enable-kernel=2.4.18"

然后您就能够到网上去下载上面红色标记的几个源码包,注意对应的版本号,下载后存放在downloads目录下。注意,无需解压!!您甚至能够去掉LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0这一行(当然也就中需要下载这个包了)!您能够到中国的映像站点去下载这些包:

http://mirrors.shlug.org/
                                    
http://www.cn.kernel.org/pub/linux

http://www.cn.kernel.org/pub/software
         
ftp://ftp.cn.kernel.org/pub/linux
ftp://ftp.cn.kernel.org/pub/software
NOW,IT’S OK!
2、进入crosstool-0.43目录,输入./demo-arm9tdmi.sh,然后经过几个小时的编译,就能够在您的toolchains目录中看到您想要的工具链,头文档,库文档等东东了!您能够把工具链所在目录加到环境变量PATH中即可使用工具链了!
注意:crosstool-0.43目录下的PATCH目录中有各个工具链的补丁,假如在编译过程中有错误,能够在crosstool-0.43目录下build目录中的解压后的源文档中打上补丁(我没打补丁也编译成功了,呵呵)。另外,假如不想每次编译时都有浪费时间的解压过程,能够在eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest 末尾处加--nounpack表示不解压(当然前提是您已自行解压源码包到了对应的目录/build/gcc-4.0.2-glibc-2.3.5-tls/arm-9tdmi-linux-gnu里了,也能够在这时给其打补丁).


本文来自ChinaUnix博客,假如查看原文请点:http://blog.chinaunix.net/u2/62343/showart_493340.html

喜欢本文,那就收藏到:

    Del.icio.us Google书签 Digg Live Bookmark Technorati Furl Yahoo书签 Facebook 百度搜藏 新浪ViVi 365Key网摘 天极网摘 和讯网摘 博拉网 POCO网摘 添加到饭否 QQ书签 Digbuzz我挖网
相关评论  我也要评论
还没有关于此文章的相关评论!
  • 昵称: (为空则显示guest)
  • 评论分数: ★ ★ ★★★ ★★★★ ★★★★★
  • 评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
  • 导航
    赞助商
    文章类别
    订阅