Linux 系统下ARM Linux交叉编译环境crosstool工具
一、使用别人编译好的开发工具链
cross-2.95.3.tar.bz2
arm-linux-gcc-3.3.2.tar.bz2
arm-elf-tools-20030314.sh。
其中arm-elf-tools是专门用来编译uclinux内核的。我们常用的cross-cross-2.95.3,下载cross-2.95.3.tar.bz2解压后放到/usr/local/arm目录下设置下PATH即可使用,这是最方便快捷的方式,缺点是cross-2.95.3 GCC版本是2.95.3,版本较低,不能编译2.6版本的Linux内核和版本较高的u-boot。cross-2.95.3.tar.bz2一般是交叉编译2.4的linux内核的,而arm-linux-gcc-3.3.2.tar.bz2一般是交叉编译2.6版本的内核的。
二、自己动手慢慢编译。
这个方法是最麻烦的,需要下载很多源文件,步骤多比较繁琐,成功率不高,极其容易出错,即使是经验丰富程序员,自己编译一套完整的工具链也是很难成功的。
三、建立交叉编译工具的途径是使用crosstool-0.43或buildroot来编译。
如果是基于gcc和glibc来制作工具链,则使用crosstool来编译,如果要基于gcc和uClibc来制作工具链,可以使用buildroot来进行编译。
uClibc比glibc小,在已有的接口上是兼容的,更适合嵌入式系统,单uClibc没包括glibc中的所以的接口实现。
使用crosstool工具(crosstool-0.43.tar.gz)
$tar zxvf crosstool-0.43.tar.gz
$cd crosstool-0.43
$cp glibc-2.3.6-version-info.h_err.patchcrosstool-0.43/patches/glibc-2.3.6/
/* glibc-2.3.6-version-info.h_err.patch为补丁程序*/
打开脚本demo-arm-softfloat.sh(具体使用那个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++"/*表示制作出的工具链支持C、C++语言,如果想支持其他语言可以在里面增加如java可以GCC_LANGUAGES="c,c++,java"*/
export GCC_LANGUAGES
# Really, you should do the mkdir before running this,
# and chown /opt/crosstool to yourself so you dont need to run as root.
mkdir -p $RESULT_TOP/*建立目录*/
#eval `cat arm-softfloat.dat gcc-2.95.3-glibc-2.1.3.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-2.95.3-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-2.95.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.2.2.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh --notest
#eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh --notest
eval `cat arm-softfloat.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh --notest
/*这个是会生成的版本、注意gcc-3.4.5-glibc-2.3.6.dat、arm-softfloat.dat和all.sh他们是三个相关的shell文件,下面分别介绍*/
echo Done.
1、demo-arm-softfloat.sh中修改
TARBALLS_DIR=/work/tools/create_crosstools/src_gcc_glibc/*修改源码存放的位置,包括gcc-3.4.5-glibc-2.3.6.dat所包含的所有包,如果可以上网,执行$ ./demo-arm-softfloat.sh后可以自行下载*/
RESULT_TOP=/opt/crosstool/*修改编译结果存放的位置*/
2、arm-softfloat.dat
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-softfloat-linux-gnu/*编译出来的样式为arm-softfloat-linux-gnu,把它修改成TARGET=arm-linux,编译出来的样式为arm-linux-gcc、arm-linux-ld等*/
TARGET_CFLAGS="-O"
GCC_EXTRA_CONFIG="--with-float=soft"
GLIBC_EXTRA_CONFIG="--without-fp"
3、all.sh
PREFIX=${PREFIX-$RESULT_TOP/$TOOLCOMBO/$TARG
ARMLinux交叉编译环境crosstool工 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)