您的位置:首页 > 其它

使用脚本创建交叉编译环境(crosstool-0.43)

2016-07-08 18:02 501 查看


使用脚本创建交叉编译环境(crosstool-0.43)

使用操作系统ubuntu 9.10,通过crosstool-0.43创建交叉编译环境,成功创建,大概用了两天,在此小做总结。
首先下载bison flex build-essential这些软件,apt-get install一下就好了。
接着在你的windows系统下,下载如下软件:
【binutils-2.16.1.tar.bz2】http://ftp.gnu.org/gnu/binutils/

【glibc-2.3.2.tar.bz2】http://ftp.gnu.org/gnu/glibc/

【glibc-linuxthreads-2.3.2.tar.bz2】http://ftp.gnu.org/gnu/glibc/

【linux-2.6.26.5.tar.bz2】http://ftp.kernel.org/pub/linux/kernel/v2.6/

【gdb-6.5.tar.bz2】http://ftp.gnu.org/gnu/gdb/

【gcc-4.1.0.tar.bz2】http://ftp.gnu.org/gnu/gcc/gcc-4.1.1/

【gcc-3.3.6.tar.bz2】http://ftp.gnu.org/gnu/gcc/gcc-3.3.6/
建议先下载好,虽然在脚本创建环境时会自动下载,不过速度暴慢,经过尝试果断先下载好。还要下好crosstool-0.43这个啊。。。
我是先输入的sudo dpkg-reconfigure dash

选择 no 以删除 dash
网上说不修改,编译会出现错误。
在某一文件夹下解压crosstool-0.43,比如你的/home/.../download。解压后cd到download下的crosstool-0.43这个目录下,修改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.
然后修改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.5   #这项根据你下载的内核版本更改

LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0

GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2

GDB_DIR=gdb-6.5
这里记录了你需要的一切软件
然后修改arm.dat:

KERNELCONFIG=`pwd`/arm.config

TARGET=arm-linux    (该名称为目标名称,我是觉得默认(arm-unknow-linux-gnu) 的太长所以修改了,修改了后要注意了相关目录的权限)

TARGET_CFLAGS="-O"

所有的设置都做完了,下载开始编译:
输入:./demo-arm.sh

这时系统开始编译,这个过程比较长,如果你没有下载上面的那些软件或者那些软件放置的文件夹不对,都需要重新下载,时间很长。如果都下好切放置目录没问题,我的虚拟机整个编译过程大概1个多小时。。。。
如果没有报错,这时需要修改路径了。
gedit ~/.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。使得路径生效。
重启终端。

然后可以测试一下

arm-linux-gcc

正常的话就会出现

arm-linux-gcc: no input files

说明程序能用了。
注:1.所有红色字体只是标注作用,修改时可以不添加在文件当中。
2.我编译过后,发现没有成功,找到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

这样就可以了,。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: