linux:自己制作编译工具链crosstool-0.43

使用VM虚拟机下操作系统ubuntu,通过crosstool-0.43创建交叉编译环境。

1、首先下载bison flex build-essential这些软件
    $:' sudo apt-get install bison
    $:' sudo apt-get install flex
    $:' sudo apt-get install build-essential

2、接着在windows系统下,下载如下软件
【crosstool-0.43.tar.gz】
位置:http://kegel.com/crosstool/
下载: http://kegel.com/crosstool/crosstool-0.43.tar.gz

【binutils-2.16.1.tar.bz2】
位置:http://ftp.gnu.org/gnu/binutils/
下载: http://ftp.gnu.org/gnu/binutils/binutils-2.16.1.tar.bz2

【glibc-2.3.2.tar.bz2】
位置:http://ftp.gnu.org/gnu/glibc/
下载: http://ftp.gnu.org/gnu/glibc/glibc-2.3.2.tar.bz2

【glibc-linuxthreads-2.3.2.tar.bz2】
位置:http://ftp.gnu.org/gnu/glibc/
下载: http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.2.tar.bz2

【Linux-2.6.26.tar.bz2】内核版本根据情况而定,因随时间而更新
位置:https://www.kernel.org/pub/
下载: https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.26.tar.bz2

【gdb-6.5.tar.bz2】
位置:http://ftp.gnu.org/gnu/gdb/
下载: http://ftp.gnu.org/gnu/gdb/gdb-6.5a.tar.bz2

【gcc-4.1.0.tar.bz2】
位置:http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/
下载: http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/gcc-4.1.1.tar.bz2

【gcc-3.3.6.tar.bz2】
位置:http://ftp.gnu.org/gnu/gcc/gcc-3.3.6/
下载: http://ftp.gnu.org/gnu/gcc/gcc-3.3.6/gcc-3.3.6.tar.bz2

3、修改一个dash选项
    $:' sudo dpkg-reconfigure dash
    选择 no 以删除 dash,网上说不修改,编译会出现错误。


4、解压crosstool-0.43并修改demo-arm.sh脚本文件
    $:'  tar -xvf crosstool-0.43.tar.gz
    $:'  cd crosstool-0.43
    $:'  vi 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/xxxx/download    #这里是你下载软件的目录,一会就将windows下载的那一堆软件放在这里
    RESULT_TOP=/home/xxxx/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-4.1.0-glibc-2.3.2-tls.dat` sh all.sh --notest
    eval `cat arm.dat gcc-4.1.1-glibc-2.3.2.dat` sh all.sh --notest       #注意这里只留下这一项不被注释掉,若你多留几项那些都要编译的
    echo Done.

5、修改gcc-4.1.1-glibc-2.3.2.dat就是刚才留下没有注释掉的那项
    BINUTILS_DIR=binutils-2.16.1
    GCC_CORE_DIR=gcc-3.3.6
    GCC_DIR=gcc-4.1.1
    GLIBC_DIR=glibc-2.3.2
    LINUX_DIR=linux-2.6.26   #这项根据你下载的内核版本更改
    LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0
    GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2
    GDB_DIR=gdb-6.5
    这里记录了你需要的一切软件。

6、修改arm.dat
    KERNELCONFIG=`pwd`/arm.config
    TARGET=arm-linux     #该名称为目标名称,我是觉得默认arm-unknow-linux-gnu的太长所以修改了,修改了后要注意了相关目录的权限
    TARGET_CFLAGS="-O"
    所有的设置都做完了。


7、开始编译
    $:' ./demo-arm.sh

这时系统开始编译,这个过程比较长,如果你没有下载上面的那些软件或者那些软件放置的文件夹不对,都需要重新下载,时间很长。如果都下好且放置目录没问题( /home/xxx/download/),虚拟机整个编译过程大概1个多小时。。。。

8、修改PATH环境变量

    如果没有报错,这时需要修改路径了。
    $:' sudo vi ~/.bashrc
    在最后添加:
    if [ -d /home/.../crosstool/gcc-4.1.1-glibc-2.3.2/arm-linux ]; then   #此处为你的文件生成的目录,根据自己编译到得目录自行修改
        PATH=/home/.../crosstool/gcc-4.1.1-glibc-2.3.2/arm-linux/bin:$PATH
    fi
    $:' source ~/.bashrc
    使得路径生效。

9、重启终端,测试
    $:' arm-linux-gcc [-v]
    arm-linux-gcc: no input files
    正常的话就会出现no input files说明程序能用了。


PS: 可能会遇到的问题
编译过后,发现没有成功,找到gcc-4.1.1-glibc-2.3.2下的bin目录下,发现没有生成arm-linux-gcc等文件。最后找到了原因,因为我的gcc版本不对,是gcc-4.4,而这里需要gcc-4.1,解决方法:
    $:' sudo apt-get install gcc-4.1
    $:' cd /usr/bin
    $:' sudo rm gcc
    $:' ln -s gcc-4.1 gcc

    这样就可以了。(目前2017.05.05虚拟机中32位ubuntu系统版本是12.04LTS-32位)
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Ubuntu是一种基于Linux的操作系统,而crosstool-ng是一个工具生成工具。这个工具允许用户在Ubuntu操作系统上生成交叉编译工具,从而能够在一个平台上为不同的目标体系结构编译和构建软件。 使用crosstool-ng可以为各种不同的目标体系结构生成交叉编译工具,包括ARM、MIPS、PowerPC等。生成的工具包含了一个交叉编译器、库和头文件,可以用来编译和构建适用于特定目标体系结构的应用程序。 Ubuntu的用户可以通过安装crosstool-ng并按照相应的文档和指南进行设置和配置。首先,用户需要在Ubuntu上安装和配置必要的开发工具和依赖项,然后从crosstool-ng的官方网站下载最新的源代码并进行编译和安装。 安装完成后,用户需要使用crosstool-ng提供的配置文件进行配置和设置。用户可以选择合适的目标体系结构,并选择所需的版本和选项。之后,用户可以运行crosstool-ng来生成交叉编译工具。 一旦工具生成完成,用户就可以使用它来编译和构建适用于特定目标体系结构的应用程序。用户可以在Ubuntu上开发应用程序,并将其交叉编译为可在其他平台上运行的可执行文件。 总之,Ubuntu和crosstool-ng的结合为用户提供了一个方便而强大的工具,使他们能够在Ubuntu上生成适用于不同目标体系结构的交叉编译工具,并开发多平台的应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

姜源Jerry

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值