您的位置:首页 > 运维架构 > Linux

ubuntu9.04下搭建交错编译环境arm-linux-gcc

2009-12-29 20:08 513 查看
一直都是用得实验室的pc,编译环境都已安装好!但是学潜入式,要是连搭建个环境都不会,说不过去,就在自己的机子过把瘾!

pc环境:ubuntu9.04

将搭建的交叉编译环境:arm-linux-gcc-4.1.1

注意:文章中命令为浅蓝色
,修改部分为红色
,/home/lingd是我的主目录,

一、准备安装包

需要的安装包(其后为下载地址):

【crosstool-0.43.tar.gz】http://kegel.com/crosstool/crosstool-0.43.tar.gz

【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.24.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.1.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/

在用户主目录中,创建一个名为downloads文件夹

lingd@ubuntu:~$ mkdir ~/downloads

将上面下载好的安装包复制到downloads目录下(下载完成后默认应该实在桌面上)

后7个安装包在安装过程中会自动下载,也可以自己提前下载好。但是因为系统单线程下载几K每秒,太慢了。 而且需要修改一下glibc里的一个文件,所以我建议提前下载。

二、安装前的修改和配置

下面是一些安装时可能遇到的问题,提前说出来,省得大家编译到一半发现错了还得重新编译,如果你想见识一下这些问题,可以直接跳转到下面的安装过程。

1.安装过程中会提示缺少下面两个包bison、flex

如果以前没有装过,下载安装一下(具体包名我忘记了,可以直接输入bison查看,如果没装过,会提示你可以下载哪些包安装,flex类似)

lingd@ubuntu:~$ sudo apt-get install bison

lingd@ubuntu:~$ sudo apt-get install flex

另外网上说还需要一个mm4,不过我装的时候没有提示,好像是安装flex时,解决依赖性时自动装上了。

2.还有一个莫名其妙的错误,提示说gcc版本太旧或者未安装,但是你用sudo apt-get install gcc 的时后会发现gcc已经是最新版本了,事实上这个错误是因为gcc版本太新了。解决方法如下:

lingd@ubuntu:~$ sudo apt-get install gcc-3.4

lingd@ubuntu:~$ cd /usr/bin

lingd@ubuntu:/usr/bin$ sudo rm gcc

lingd@ubuntu:/usr/bin$ sudo ln -s gcc-3.4 gcc

3.安装是还出现了如下错误:

/home/xxs/crosstool-0.43/build/arm-arm9tdmi-linux-gnu/gcc-4.1.1-glibc-2.3.2/build-glibc/csu/version-info.h:1:1:
missing terminating " character

系统在编译生成version.o时候发现version-info.h文件有错误

解决方法:修改glibc-2.3.2中的一个文件

解压glibc-2.3.2.tar.bz2

lingd@ubuntu:/usr/bin$ cd ~/downloads

lingd@ubuntu:~/downloads$ tar jxvf glibc-2.3.2.tar.bz2

修改glibc-2.3.2/csu/Makefile文件

lingd@ubuntu:~/downloads$ vi glibc-2.3.2/csu/Makefile

文件末尾有2处echo

echo "/"Compiled on a $$os $$version system" /

"on `date +%Y-%m-%d`.//n/"" ;; /

改为:

echo "/"Compiled on a $$os $$version system" /

"on `date +%Y-%m-%d`.////n/"" ;; /

echo "/"Available extensions://n/""; /

改为:

echo "/"Available extensions:////n/""; /

保存后,备份原来的glibc-2.3.2.tar.bz2,并重新压缩为glibc-2.3.2.tar.bz2

lingd@ubuntu:~/downloads$ mv glibc-2.3.2.tar.bz2 glibc-2.3.2.tar.bz2.bak

lingd@ubuntu:~/downloads$ tar cjvf glibc-2.3.2.tar.bz2 glibc-2.3.2

三、安装交叉编译工具

解决好上面的一些小问题就可以开始安装了

1.创建一个交叉编译工具安装目录

lingd@ubuntu:~/downloads$ sudo mkdir /opt/crosstool

这是因为安装文件默认是安装到这个目录里的

2.修改安装目录安装目录拥有者,为自己添加权限

lingd@ubuntu:~/downloads$ sudo chown lingd /opt/crosstool

3.解压crosstool-0.43.tar.gz(此时安装包应该位于/home/yourname/downloads/目录下,不是的话自己改一下)

lingd@ubuntu:~/downloads$ tar -zxvf crosstool-0.43.tar.gz

进入crosstool-0.43目录

lingd@ubuntu:~/downloads$ cd crosstool-0.43

4. 配置 crosstool-0.43

lingd@ubuntu:~/downloads/crosstool-0.43$ vi demo-arm.sh

注释掉#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

注意:cat arm.dat gcc-4.1.1-glibc-2.3.2.dat而不是默认的gcc-4.1.1-glibc-2.3.6-tls.dat

修改linux内核版本,linux内核可以自己选择,我的linux内核是linux-2.6.24(前面下载的那个)

lingd@ubuntu:~/downloads/crosstool-0.43$ vi 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.24

LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0

GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.2

GDB_DIR=gdb-6.5

修改交叉编译工具前缀

lingd@ubuntu:~/downloads/crosstool-0.43$ vi arm.dat

KERNELCONFIG=`pwd`/arm.config

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

TARGET_CFLAGS="-O"

5. 系统将开始编译

所有使用到的文件(缺少的文件)会在编译的时候来下载:

binutils-2.16.1

gcc-3.3.6

gcc-4.1.1

glibc-2.3.2

linux-2.6.24

linux-libc-headers-2.6.12.0

glibc-linuxthreads-2.3.2

gdb-6.5

这个工程很长需要n小时的时间来

可以ls一下看看里面的文件,里面有一些脚本文件,具体功能可以到http://kegel.com/crosstool上查看FAQ

6.运行./demo-arm.sh进行安装

lingd@ubuntu:~/downloads/crosstool-0.43$ ./demo-arm.sh

这步要注意,网上有人说需要修改脚本文件里的一些设置,我没改也装上了,不知道为什么。

7.剩下的就等着编译安装吧,很漫长~~

四、修改环境变量

安装完成后,默认的安装目录就是开始创建的那个/opt/crosstools/

1.添加环境变量

lingd@ubuntu:~/downloads/crosstool-0.43$ vi ~/.bashrc

在最后添加如下

if [ -d /opt/crosstool/gcc-4.1.1-glibc-2.3.2/arm-linux ]; then

PATH=/opt/crosstool/gcc-4.1.1-glibc-2.3.2/arm-linux/bin:$PATH

fi

就是把安装的工具bin目录添加到PATH变量中。

保存

2.source ~/.bashrc,使环境变量生效

lingd@ubuntu:~/downloads/crosstool-0.43$ source ~/.bashrc

3.重启终端。

输入arm后,连续按两下table键,可以看到arm-linux-gcc-4.1.1,说明已经安装成功

lingd@ubuntu:~/downloads$ arm

arm2hpdl arm-linux-gcc arm-linux-objdump

arm-linux-addr2line arm-linux-gcc-4.1.1 arm-linux-ranlib

arm-linux-ar arm-linux-gccbug arm-linux-readelf

arm-linux-as arm-linux-gcov arm-linux-size

arm-linux-c++ arm-linux-gprof arm-linux-strings

arm-linux-c++filt arm-linux-ld arm-linux-strip

arm-linux-cpp arm-linux-nm

arm-linux-g++ arm-linux-objcopy

lingd@ubuntu:~/downloads$ arm

本文大部分内容借鉴http://blog.csdn.net/applezhou6699/archive/2009/08/19/4463162.aspx
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: