gcc3.2.3制作

http://man.chinaunix.net/linux/lfs/htmlbook/chapter06/chapter06.html参考具体的gcc相关软件安装
本人的联系方式为:549827768@qq.com,西华大学

首先,如果gcc版本太高,可以用yum install compat-gcc-34  ,3.4版本的gcc不过之前应该在/usr/bin下重命名gcc,以保证之后还能运

行,可以查看它的版本,cat /proc/version,用它的版本号来重命名,gcc -v查看当前gcc版本号

ftp://ftp.sunet.se/pub/Linux/distributions/scientific/53/i386/SL/
上面这个网站中有一些低版本的gcc和glibc,另外还有一些nfs工具等等,其中就有以compat开头的gcc和glibc,另外当然还有以gcc、

glibc开头的


我们采用crosstool0.42来作为我们编译交叉编译工具链的脚本。详细的用法说明请阅读网站上的文档crosstool-how to 。

    [zzl@localhost] tar -xzvf crosstool-0.43.tar.gz

    [zzl@localhost]cd crosstool-0.42

    我们可以看到目录下有很多.sh脚本和.dat配置文件。每一个支持的CPU都有它所相应的脚本,如我们选用demo-arm9tdmi.sh

需要我们记住的三个重要的变量:

   TARBALLS_DIR=$HOME/downloads #$HOME为用户的主目录,如fedora这个目录,是固定的,与$PWD为当前路径不同

    RESULT_TOP=/usr/local/arm  #做了更改

    GCC_LANGUAGES="c,c++"

 

 我们需要如下压缩包:gcc-3.4.1.tar.gz glibc-2.3.3.tar.gz linux-2.6.17binutils-2.15.tar.gz glibc-linuxthreads-2.3.3.tar.gz
gdb6.0a.tar.gz,且还要下载内核arm补丁,给它打补丁,之后再压缩成原来格式,并删除解压的文件,只保留打补丁后的文件
下面为打补丁的格式,其中linux为linux内核解压后产生的目录:
tar jxvf patch-2.4.18-rmk7.bz2;cp patch-2.4.18-rmk7 linux;cd linux;patch -p1<patch-2.4.18-rmk7
最后再次还原成原来的包文件:tar czvf linux-2.4.18.tar.gz linux ,即将linux目录及其文件打包为前面的文件名

首要任务是下载这些源代码软件包,并将它们放在/home/fedora/downloads下面,保证这些包的所有者为当前用户而不是根用户。
可以用chown usr 文件名,更改使用者,更改后的使用者为usr,我的用户名为fedora,可以用ll查看用户名

我们选择的配置是:demo-arm9tdmi.sh,其内容具体如下:

     #!/bin/sh

    set -ex

    TARBALLS_DIR=$HOME/downloads

    RESULT_TOP=/usr/local/arm  #原本是:/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    #应该先创建/usr/local/arm目录,并chmod fedora /usr/local/arm  目录的用户为fedora

                            #-p, --parents 需要时创建目标目录的上层目录,但即使这些目录已存在也不当作错误处理

    # Build the toolchain. Takes a couple hours and a couple gigabytes.

    

    eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest --gdb#增加调试器

   
    

    echo Done.

  
   从 eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh --notest --gdb

    可以看出,我们的gcc版本采用3.2.3,glibc版本采用2.2.5。

     我们再来看gcc-3.2.3-glibc-2.2.5.dat这个文件,并做一些更改

    BINUTILS_DIR=binutils-2.15

    GCC_DIR=gcc-3.2.3

    GLIBC_DIR=glibc-2.2.5

    LINUX_DIR=linux-2.4.18  #修改后的内容,为了匹配内核

    GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.2.5
    GDB_DIR=gdb-6.0  #增加的内容

 

修改 armtdmi.dat 文件如下红色部分:
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-9tdmi-linux-gnu(这个名字可以改成你想要的交叉工具链前缀名)
TARGET_CFLAGS="-O"
GCC_EXTRA_CONFIG="--with-cpu=arm9tdmi --enable-cxx-flags=-mcpu=arm9tdmi"

 

 

修改all.sh 文件如下:
修改 all.sh 文件第 41 行,指定存放工具链文件夹的名称;
vimall.sh +41
将:TOOLCOMBO=$GCC_DIR‐$GLIBC_DIR
改为:
 TOOLCOMBO=3.2.3  #gcc版本号作为文件名
修改第 70 行,更改安装路径,将:
PREFIX=${PREFIX‐$RESULT_TOP/$TOOLCOMBO/$TARGET}
改为
PREFIX=${PREFIX‐$RESULT_TOP/$TOOLCOMBO}  #即路径最终为:/usr/local/arm/3.2.3,gcc就在3.2.3的bin库中


最后:
#vi /etc/profile在if代码 语句中添加绝对路径
PATH=$PATH :/usr/local/arm/3.2.3/gcc-3.2.3-glibc-2.2.5/arm9tdmi-linux-gnu/bin
也可以设置为临时变量:export PATH=$PATH :/usr/local/arm/3.2.3/gcc-3.2.3-glibc-2.2.5/arm9tdmi-linux-gnu/bin
但每次开机要重启,此时我们编译器就上上述的路径中,包含arm-9tdmi-linux-gnu-gcc,arm-9tdmi-linux-gnu-g++,arm-9tdmi-linux-

gnu-ld

安装方法很简单,只要把arm目录放在/usr/local下,并照上面修改/etc/profile文件路径即可


specs文件最后在/usr/local/arm/3.2.3/gcc-3.2.3-glibc-2.2.5/arm9tdmi-linux-gnu/lib中,specs文件中一般有一句/lib/ld-

linux.so.2,有可能要修改为自己的库

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值