Chinaunix首页 | 论坛 | 博客
  • 博客访问: 722911
  • 博文数量: 66
  • 博客积分: 2418
  • 博客等级: 大尉
  • 技术积分: 1659
  • 用 户 组: 普通用户
  • 注册时间: 2009-12-28 10:04
个人简介

keep moving

文章分类

全部博文(66)

文章存档

2015年(2)

2014年(6)

2013年(7)

2011年(7)

2010年(42)

2009年(2)

分类: 嵌入式

2009-12-29 20:17:50

一直都是用得实验室的pc,编译环境都已安装好!但是学潜入式,要是连搭建个环境都不会,说不过去,就在自己的机子过把瘾!
pc环境:ubuntu9.04
将搭建的交叉编译环境:arm-linux-gcc-4.1.1
注意:文章中命令为浅蓝色,修改部分为红色,/home/lingd是我的主目录,


一、准备安装包
需要的安装包(其后为下载地址):
【crosstool-0.43.tar.gz】
【binutils-2.16.1.tar.bz2】
【glibc-2.3.2.tar.bz2】
【glibc-linuxthreads-2.3.2.tar.bz2】
【linux-2.6.24.tar.bz2】
【gdb-6.5.tar.bz2】
【gcc-4.1.1.tar.bz2】
【gcc-3.3.6.tar.bz2】

在用户主目录中,创建一个名为downloads文件夹
lingd@ubuntu:~$ mkdir ~/downloads
将上面下载好的安装包复制到downloads目录下(下载完成后默认应该实在桌面上)

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

二、安装前的修改和配置
下面是一些安装时可能遇到的问题,提前说出来,省得大家编译到一半发现错了还得重新编译,如果你想见识一下这些问题,可以直接跳转到下面的安装过程。
1.安装过程中会提示缺少下面两个包bison、flex、patch
如果以前没有装过,下载安装一下(具体包名我忘记了,可以直接输入bison查看,如果没装过,会提示你可以下载哪些包安装,flex类似)
lingd@ubuntu:~$ sudo apt-get install bison
lingd@ubuntu:~$ sudo apt-get install flex
另外网上说还需要一个mm4,不过我装的时候没有提示,好像是安装flex时,解决依赖性时自动装上了。

安装过程中还可能会提示缺少patch,提示信息如下:
applying patch /home/lingd/downloads/crosstool-0.43/patches/glibc-2.3.2/arm-asm-clobber.patch
getandpatch.sh: 1: patch: not found
patch /home/lingd/downloads/crosstool-0.43/patches/glibc-2.3.2/arm-asm-clobber.patch failed
解决方法:
lingd@ubuntu:~$ sudo apt-get install patch

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 -R 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一下看看里面的文件,里面有一些脚本文件,具体功能可以到上查看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
阅读(3028) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~