在 Fedora 下建立 ARM-Linux 交叉编译环境

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

在 Fedora 下建立 ARM-Linux 交叉编译环境

这几天忙着在Fedora 7下建立ARM-Linux的交叉编译环境。一开始参考了《构建嵌入式Linux系统》,这是一本很经典的书。上面介绍了建立ARM-Linux 的交叉编译环境的许多知识,建立的原则和方法。我一开始想按照上面的一般方法,建立一个自己的、最新的交叉编译环境。但是,试了才知道这个过程是一个繁琐、耗时的工作。对于没有编译原理知识的我来说,更是耗时又毫无意义。引用《嵌入式设计及Linux驱动程序开发指南——基于ARM9处理器(第2版)》的原话:“在这项工作上浪费时间似乎没有任何意义,我也是这么认为的,”。由于在公司做事,时间不多,最后,我利用crosstool-0.43,自动完成了这项工作。在是否有必要自己建立交叉编译环境的问题上,我建议:如果你是一个学生,建议你认真学习编译原理、Linux和GNU的编译器原理,再一步一步的自己建立交叉编译环境(学生比较有时间,少泡MM,少玩游戏,时间就

挤出来了。好好学习,以后MM来泡你,别人玩你编的游戏。)。如果你是程

序员(不是交叉编译器的开发者),建议不要在这上面浪费时间了,赚钱要紧,把这个作为业余爱好吧!

这次建立交叉编译环境我主要参考的资料是:

1、《构建嵌入式Linux系统》

2、《嵌入式设计及Linux驱动程序开发指南——基于ARM9处理器(第2版)》

3、《ARM Linux 交叉编译工具链制作攻略》

4、《AT91RM9200引导程序的建立--------建立交叉编译工具链》

Host CPU:i686

RAM: 768MB

OS: Fedora 7

TARGET CPU :ARM9TDMI

OS : Linux-2.6.22.2/2.6.15.4

我在Fedora7下快速、成功地建立ARM-Linux交叉编译环境,是看了《嵌入式设计及Linux驱动程序开发指南——基于ARM9处理器(第2版)》中关于crosstool的介绍。

crosstool是由美国人Dan Kegel(毕业于加(利福尼亚)州工学院)开发的一套可以自动编译不同匹配版本gcc和glibc,并作测试的脚本程序。写这篇文章时的最新版本是0.43。

下载地址/crosstool/crosstool-0.43.tar.gz

在/crosstool/crosstool-0.43/buildlogs/可以看到各种CPU和GCC+Glibc版本那些已经编译成功,那些部分成功,那些彻底失败。如果你不是编译器开发者,就按着上面做吧。

你也可以到/crosstool/#download看看是否有更新的版本。

第一步:保证你装Fedora7时,安装了需要的软件开发工具。在《ARM Linux 交叉编译工具链制作攻略》中说:“0、制作之前确保你的机子上有如下几个工具:bison、flex、build-essential。”我的机子上有bison和flex,至于build-essential是包含一个在建立deb包过程中起关键作用的包的信息列表,Fedora下并不需要。

第三步:察看crosstool文件夹中,可以看到目录下有很多.sh脚本和.dat

配置文件。找到你要交叉编译的CPU所对应的脚本,如我要交叉编译的CPU是

root.

mkdir -p $RESULT_TOP

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.2.5.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-3.2.3-glibc-2.3.2-tls.dat` sh all.sh --notest

#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.2.5.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-3.3.6-glibc-2.3.2-tls.dat` sh all.sh --notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.2.5.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.2-tls.dat` sh all.sh --notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.5-tls.dat` sh all.sh --notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-3.4.5-glibc-2.3.6-tls.dat` sh all.sh --notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.2-tls.dat` sh all.sh --notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.5-tls.dat` sh all.sh --notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6.dat` sh all.sh

--notest

#eval `cat arm9tdmi.dat gcc-4.0.2-glibc-2.3.6-tls.dat` sh all.sh --notest

#eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2.dat` sh all.sh

--notest

eval `cat arm9tdmi.dat gcc-4.1.0-glibc-2.3.2-tls.dat` sh all.sh

相关文档
最新文档