免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1075 | 回复: 0
打印 上一主题 下一主题

Red Hat Enterprise 5下安装交叉编译工具链 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-05 20:58 |只看该作者 |倒序浏览
               Red Hat Enterprise 5下安装交叉编译工具链
    建立嵌入式linux的基础是建立基于ARM平台的交叉编译工具链。通常构建交叉工具链有3种方法:
方法一  分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。
方法二  通过Crosstool脚本工具来实现一次编译生成交叉编译工具链。
方法三  直接从网上(ftp.arm.kernel.org.uk)下载已经制作好的交叉编译工具链。
    我认为方法一太复杂,容易出错,我做了一次没有成功,放弃了,方法三简单省事,但局限性大,不能编译新版本的U-boot和内核。因此我使用Crosstool工具构建交叉工具链。之前我用的系统是Ubuntu8.04,做交叉编译链时郁闷死了。虽然最后成功编译出来了,但花了一周的时间。Ubuntu作为桌面系统来说非常的棒,但用来开发嵌入式就比较郁闷了,因为有很多的库默认是不安装的,建议做开发的使用Red Hat系统。我装的系统是Red Hat Enterprise 5。
下面是用crosstool-0.43制作交叉编译工具链的过程。
1、准备资源文件
下载crosstool-0.43.tar.gz。
下载地址:http://kegel.com/crosstool/crosstool-0.43.tar.gz
内核linux-2.6.10.tar.gz 下载地址:ftp.kernel.org
其他资源是:binutils-2.16.1.tar.gz、gcc-3.3.6.tar.bz2、gdb-6.5.tar.bz2、glibc-linuxthreads-2.3.2.tar.gz、linux-libc-headers-2.6.12.0.tar.bz2、gcc-4.1.1.tar.bz2、glibc-2.3.2.tar.gz、linux-2.6.24.tar.gz。下载地址为:ftp.gnu.org
用户目录为david,将crosstool-0.43.tar.gz在/home/david目录下解压,使用root用户登录,解压命令如下:
# cd /home/david/crosstool-0.43
# tar –xvzf crosstool-0.43.tar.gz
将其他资源放在/home/david/downloads目录下。
2、建立脚本文件
接着建立自己的编译脚本,起名为arm.sh,找一个最接近的文件demo-arm.sh
作为模板,将该脚本的内容复制到arm.sh。命令如下:
# cd /home/david/crosstool-0.43
# cp demo-arm.sh arm.sh
# vi arm.sh
修改后的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/david/downloads
RESULT_TOP=/home/david/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-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.1-glibc-2.3.2.dat` sh all.sh --notest --gdb
echo Done.
    其中RESULT_TOP=/home/david/crosstool是为了编译时的操作全在davidchen用户的权限范围内。如果写的是/opt/crosstool,david用户就没有权限进行操作,也就不能编译成功了。
3、建立配置文件
    arm.dat文件主要用于定义配置文件、定义生成编译工具链的明晨以及定义
编译选项等。命令如下:
# cd /home/david/crosstool-0.43
# vi arm.dat

修改后arm.dat内容如下:
KERNELCONFIG=`pwd`/arm.config
TARGET=arm-linux
TARGET_CFLAGS="-O"
    gcc-4.1.1-glibc-2.3.2.dat文件主要定义编译过程中所需要的库以及它定义的版本。命令如下:
# cd /home/david/crosstool-0.43
# vi gcc-4.1.1-glibc-2.3.2.dat
修改后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
5、执行脚本
    在/home/david目录下新建一个crosstool目录,并将crosstool和crosstool-0.43目录的权限设置为当前用户和同组用户可读可写可执行,为了简便,可设置为777。然后切换为david用户后执行脚本文件arm.sh。命令如下:
# cd /home/david
# mkdir crosstool
# chmod 777 crosstool
# chmod 777 crosstool-0.43
# su david
$ ./arm.sh
你可以出去喝杯咖啡或者看部电影,大约两小时后在/home/david/crosstool目录下生成新的交叉编译工具。
6、添加环境变量
    使用命令sudo su切换到root用户,在系统/etc目录下的profile文件的最后添加一行:
export PATH=/home/david/crosstool/gcc-4.1.1-glibc-2.3.2
/arm-linux/bin:$PATH
保存并退出终端,执行命令# source /etc/profile使环境变量生效。关于环境变量请参考shareman的文章:http://blog.chinaunix.net/u2/80919/showart.php?id=1316644
执行# arm-linux-gcc -v命令,可以看到编译好的交叉编译器版本为4.1.1。


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/82816/showart_1361449.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP