用Crosstool-0.43制作交叉交叉工具链的一些心得!(上)

    技术2022-05-20  52

          获得交叉编译工具链有两种方法,一种是去http://ftp.arm.linux.org.uk/pub/armlinux/toolchain/下载已经制作好的交叉编译工具链,版本比较旧,且缺少gdb.另一种就是自己去制作交叉编译工具链.

         这几天尝试着自己去制作交叉编译工具链,先回顾下步骤和所遇到的问题.       O(∩_∩)O

     

         首先,我们需要去http://www.kegel.com/crosstool/crosstool-0.38.tar.gz下载crosstool脚本. 解压下载的软件包,查看arm.dat文件内容.

    $cat ./arm.dat

    KERNELCONFIG=`pwd`/arm.config TARGET=arm-linux                         //指定开发板.

    TARGET_CFLAGS="-O"

    $cat ./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=$HOME/crosstool/source   //制作工具链所需要的软件包的目录. RESULT_TOP=$HOME/arm/4.1.0             //最终生成的工具链所在的目录. 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

     

    //该脚本文件显示了目前所能成功制作的交叉编译工具链的一些版本,选择我们所需要的版本,既去掉前面的注释,没被选择的版本号直接注释掉即可.

     

    $cat ./ gcc-4.1.0-glibc-2.3.2-tls.dat   //打开所选择的交叉工具链所对应的文件,里面有成功制作出

                                                    //该工具链的GCC,GLIBC等软件包的一些组合.

    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"

      下载所需的软件包到指定的目录,虽然该脚本启动会自动下载所需软件包,但还是推荐手动下载所需的软件包.(自动下载时速度可能比较慢)

     


    最新回复(0)