资源预览内容
第1页 / 共30页
第2页 / 共30页
第3页 / 共30页
第4页 / 共30页
第5页 / 共30页
第6页 / 共30页
第7页 / 共30页
第8页 / 共30页
第9页 / 共30页
第10页 / 共30页
亲,该文档总共30页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
精品河北工业大学城市学院 毕业设计说明书 作 者: 学 号: 087663 学 院: 信息工程学院 专 业: 电子科学与技术 题 目: ARM-Linux 交叉编译环境的创建 指导者: 副教授 评阅者: 讲师 2012 年 5 月 31 日精品毕业设计中文摘要ARM-LinuxARM-Linux 交叉编译环境的创建交叉编译环境的创建摘要:摘要:交叉编译就是在一个平台生成可以在另一个平台执行的代码,它作为嵌入式系统开发的前提和准备,具有相当重要的作用,嵌入式系统的可执行文件都是通过交叉编译生成的。本文详细介绍了建立嵌入式交叉编译环境的具体步骤,通过分步编译 Binutils、GCC、glibc 和 GDB,最终成功完成了基于 ARM-Linux 的交叉编译环境的建立,并成功通过测试。在本设计中还列举了用 crosstool-ng 构建交叉编译工具链的方法,这个方法比前一种简单,而且比较快捷。这两种方法制作的交叉编译环境都具有高度的可靠性和稳定性,并且具有较好的实用价值。关键词: 嵌入式 linux arm 交叉编译环境 gcc精品毕业设计外文摘要TitleTitle The establishment of ARM-Linux cross-compiling environmentAbstractAbstractCross-compiling means the compiler and running of program are depended on different platforms, codes generated on one platform can run on another. As the premise and basis for exploiting embedded systems, Cross-compiling is of great importance for almost all embedded executable files are generated through this approach. Specifics on how to establish a cross-compiling environment are introduced in this thesis. Through compiling Binutils, GCC, glibc and GDB, etc, an ARM-Linux cross-compiler is successfully created and proved to be correct. Another method using crosstool-ng is also included, which is more simple and convenient than the former. ARM-Linux cross-compilers based on two methods are both of high reliability and stability, as well as good practical values.KeywordsKeywords: embedded-Linux arm cross-compiling environment GCC精品目目 次次1 引言.2 1.1 课题研究的目的意义 2 1.2 课题历史背景.3 1.3 开发方案的选择.6 2 了解嵌入式开发7 2.1 Linux 常用命令 .7 2.1.1 文件目录类 7 2.1.2 驱动挂载类 8 2.1.3 压缩解压类 8 2.1.4 源代码包安装8 2.1.5 进程控制类9 2.1.6 用户帐号类9 2.1.7 网络服务9 2.2 GCC 包括的工具。 9 2.3 交叉调试概念 .10 3.分步编译安装源代码与库文件方法.11 3.1 创建编译环境 .12 3.1.1 首先设置环境变量: .12 3.1.2 创建相关目录 .12 3.1.3 安装 linux 头文件 .12 3.2 编译 binutils.13 3.3 编译 bootstrap-gcc14 3.4 编译 Glibc153.5 编译完整 Gcc17 3.6 编译 GDB18 4 用 crosstool-ng 构建交叉编译工具链 .19 4.1 下载 crosstool-ng 20 4.2 安装所必须的工具文件.20 4.3 安装 crosstool-ng 21 4.4 复制交叉编译文件.21 4.5 配置交叉编译工具链.21 4.6 编译工具链.22 4.7 增加环境变量.23 结 论.25 参 考 文 献26 致 谢.27精品1 1 引言引言1.11.1 课题研究的目的意义课题研究的目的意义嵌入式系统无疑是当前最热门最有发展前途的 IT 应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应的要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC) 、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。伴随着嵌入式产品的迅速发展,使得嵌入式软件开发再度成为一个研究热点。由于嵌入式设备的性能局限,往往不能通过本机编译得到所需软件的可执行程序。因此,以 Linux 为主机操作系统,搭配一个交叉编译系统,为嵌入式设备生成可执行程序已成为现在日益流行的编译嵌入式软件的解决方案。而开放源码的编译器GCC,经过多年的发展,已能支持几乎所有知名厂商的处理器,是嵌入式软件开发中理想的交叉编译器。但现有 GCC 支持的平台并不能满足层出不穷的嵌入式产品的开发需要,仍有许多平台得不到支持。随着信息技术的发展,微型化和专业化成为信息产品发展的新趋势,嵌入式产品成为信息产业的主流。而 ARM 技术的日益成熟和广泛应用,使得基于 ARM 核的微处理器已经成为嵌入式市场的首选。建立面向 ARM 构架的嵌入式操作系统也就成为当前研究的热点问题。在众多的嵌入式操作系统中,许多开发人员都选择Linux,主要是因为它是源码公开而且是免费的,可以让任何人将其修改移植到自己的目标平台系统里使用。系统可以通过配置内核,动态地加载和卸载内核模块机制,可以方便地在内核中添加新的组件或卸载不再需要的内核组件。精品交叉编译环境是嵌入式开发必不可少的工具,在进行项目开发的时候必须搭建一套开发环境,包括操作系统、连接器、编译器及调试器在内的软件开法工具。交叉编译的实现解决了嵌入式系统目标平台存储空间和运算能力有限的缺点,完善的工具链可以保证项目开发的进度和质量,是嵌入式开发的基础。1.21.2 课题历史背景课题历史背景Linux 是一种自由和开放源码的类 Unix 操作系统。目前存在着许多不同的Linux,但它们都使用了 Linux 内核。Linux 可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的 10 台超级计算机运行的都是 Linux 操作系统。严格来讲,Linux 这个词本身只表示 Linux 内核,但实际上人们已经习惯了用Linux 来形容整个基于 Linux 内核,并且使用 GNU 工程各种工具和数据库的操作系统。20 世纪 50 年代,IBM 的 John Backus 带领一个研究小组对 FORTRAN 语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky 开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky 的研究导致了根据语言文法 的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky 架构(Chomsky Hierarchy) ,它包括了文法的四个层次:0 型文法、1 型文法、2 型文法和 3 型文法,且其中的每一个都是其前者的特殊情况。2 型文法(或上下文无关 文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在 60 年代和 70 年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。 有限状态自动机(Finite Automation)和正则表达式(Regular Expression)同上精品下文无关文法紧密相关,它们与 Chomsky 的 3 型文法相对应。对它们的研究与Chomsky 的研究几乎同时开始,并且引出了 表示程序设计语言的单词的符号方式。 人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用至今。人们通常 将其称为优化技术(Optimization Technique) ,但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique) 。 当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构 造。这些程序最初被称为编译器的编译器(Compiler-compiler) ,但更确切地应称为分析程序生成器(Parser Generator) ,这是因为它们仅仅能够自动处理编译的一部分。这些程序中最著名的是 Yacc(Yet Another Compiler-compiler) ,它是由 Steve Johnson 在 1975 年为 Unix 系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与 Yacc 同时,由 Mike Lesk 为 Unix 系统开发)是这其中的佼佼者。 在 20 世纪 70 年代后期和 80 年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。 编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中 的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数语言编译的 Hindley-Milner 类型检查的统一算法。其次,编译器 已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的 IDE 标准并没有多少,但是对标准的窗口环境进 行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近 20 年中都没有多大的改变,它现在正迅速地成为计 算机科学课程中的中心环节。 在 20 世纪 90 年代,作为 GNU 项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感兴趣的人可以很容易的得到它们的免费源代码。 大约在 19
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号