ARM-Linux交叉编译环境的创建

上传人:枫** 文档编号:509060267 上传时间:2024-01-21 格式:DOC 页数:30 大小:357.50KB
返回 下载 相关 举报
ARM-Linux交叉编译环境的创建_第1页
第1页 / 共30页
ARM-Linux交叉编译环境的创建_第2页
第2页 / 共30页
ARM-Linux交叉编译环境的创建_第3页
第3页 / 共30页
ARM-Linux交叉编译环境的创建_第4页
第4页 / 共30页
ARM-Linux交叉编译环境的创建_第5页
第5页 / 共30页
点击查看更多>>
资源描述

《ARM-Linux交叉编译环境的创建》由会员分享,可在线阅读,更多相关《ARM-Linux交叉编译环境的创建(30页珍藏版)》请在金锄头文库上搜索。

1、河北工业大学城市学院2012届本科毕业设计说明书河北工业大学城市学院毕业设计说明书作 者: 李京 学 号: 087663 学 院: 信息工程学院 专 业: 电子科学与技术 题 目: ARM-Linux交叉编译环境的创建 指导者: 王 伟 副教授 评阅者: 田汉民 讲师 2012年 5月 31日 毕业设计中文摘要ARM-Linux交叉编译环境的创建摘要:交叉编译就是在一个平台生成可以在另一个平台执行的代码,它作为嵌入式系统开发的前提和准备,具有相当重要的作用,嵌入式系统的可执行文件都是通过交叉编译生成的。本文详细介绍了建立嵌入式交叉编译环境的具体步骤,通过分步编译Binutils、GCC、gli

2、bc 和GDB,最终成功完成了基于ARM-Linux 的交叉编译环境的建立,并成功通过测试。在本设计中还列举了用crosstool-ng 构建交叉编译工具链的方法,这个方法比前一种简单,而且比较快捷。这两种方法制作的交叉编译环境都具有高度的可靠性和稳定性,并且具有较好的实用价值。关键词: 嵌入式linux arm 交叉编译环境 gcc2毕业设计外文摘要Title The establishment of ARM-Linux cross-compiling environmentAbstractCross-compiling means the compiler and running of p

3、rogram 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

4、 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. AR

5、M-Linux cross-compilers based on two methods are both of high reliability and stability, as well as good practical values.Keywords: embedded-Linux arm cross-compiling environment GCC目 录1 引言21.1课题研究的目的意义21.2 课题历史背景31.3 开发方案的选择62 了解嵌入式开发72.1 Linux常用命令72.1.1文件目录类72.1.2驱动挂载类82.1.3压缩解压类82.1.4 源代码包安装82.1.

6、5 进程控制类92.1.6 用户帐号类92.1.7 网络服务92.2 GCC包括的工具。92.3交叉调试概念103.分步编译安装源代码与库文件方法113.1创建编译环境123.1.1首先设置环境变量:123.1.2创建相关目录123.1.3安装linux头文件123.2编译binutils133.3编译bootstrap-gcc143.4编译Glibc153.5编译完整Gcc173.6编译GDB184 用crosstool-ng 构建交叉编译工具链194.1 下载crosstool-ng204.2 安装所必须的工具文件204.3 安装crosstool-ng214.4 复制交叉编译文件214.

7、5 配置交叉编译工具链214.6 编译工具链224.7 增加环境变量23结 论25参 考 文 献26致 谢271 引言1.1课题研究的目的意义嵌入式系统无疑是当前最热门最有发展前途的IT应用领域之一。嵌入式系统用在一些特定专用设备上,通常这些设备的硬件资源(如处理器、存储器等)非常有限,并且对成本很敏感,有时对实时响应的要求很高等。特别是随着消费家电的智能化,嵌入式更显重要。像我们平常常见到的手机、PDA、电子字典、可视电话、VCD/DVD/MP3 Player、数字相机(DC)、数字摄像机(DV)、U-Disk、机顶盒(Set Top Box)、高清电视(HDTV)、游戏机、智能玩具、交换机

8、、路由器、数控设备或仪表、汽车电子、家电控制系统、医疗仪器、航天航空设备等等都是典型的嵌入式系统。伴随着嵌入式产品的迅速发展,使得嵌入式软件开发再度成为一个研究热点。由于嵌入式设备的性能局限,往往不能通过本机编译得到所需软件的可执行程序。因此,以Linux为主机操作系统,搭配一个交叉编译系统,为嵌入式设备生成可执行程序已成为现在日益流行的编译嵌入式软件的解决方案。而开放源码的编译器GCC,经过多年的发展,已能支持几乎所有知名厂商的处理器,是嵌入式软件开发中理想的交叉编译器。但现有GCC支持的平台并不能满足层出不穷的嵌入式产品的开发需要,仍有许多平台得不到支持。随着信息技术的发展,微型化和专业化

9、成为信息产品发展的新趋势,嵌入式产品成为信息产业的主流。而ARM技术的日益成熟和广泛应用,使得基于ARM核的微处理器已经成为嵌入式市场的首选。建立面向ARM构架的嵌入式操作系统也就成为当前研究的热点问题。在众多的嵌入式操作系统中,许多开发人员都选择Linux,主要是因为它是源码公开而且是免费的,可以让任何人将其修改移植到自己的目标平台系统里使用。系统可以通过配置内核,动态地加载和卸载内核模块机制,可以方便地在内核中添加新的组件或卸载不再需要的内核组件。交叉编译环境是嵌入式开发必不可少的工具,在进行项目开发的时候必须搭建一套开发环境,包括操作系统、连接器、编译器及调试器在内的软件开法工具。交叉编

10、译的实现解决了嵌入式系统目标平台存储空间和运算能力有限的缺点,完善的工具链可以保证项目开发的进度和质量,是嵌入式开发的基础。1.2 课题历史背景Linux是一种自由和开放源码的类Unix操作系统。目前存在着许多不同的Linux,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,从手机、平板电脑、路由器和视频游戏控制台,到台式计算机、大型机和超级计算机。Linux是一个领先的操作系统,世界上运算最快的10台超级计算机运行的都是Linux操作系统。严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU

11、工程各种工具和数据库的操作系统。20世纪50年代,IBM的John Backus带领一个研究小组对FORTRAN语言及其编译器进行开发。但由于当时人们对编译理论了解不多,开发工作变得既复杂又艰苦。与此同时,Noam Chomsky开始了他对自然语言结构的研究。他的发现最终使得编译器的结构异常简单,甚至还带有了一些自动化。Chomsky的研究导致了根据语言文法 的难易程度以及识别它们所需要的算法来对语言分类。正如现在所称的Chomsky架构(Chomsky Hierarchy),它包括了文法的四个层次:0型文法、1型文法、2型文法和3型文法,且其中的每一个都是其前者的特殊情况。2型文法(或上下文

12、无关 文法)被证明是程序设计语言中最有用的,而且今天它已代表着程序设计语言结构的标准方式。分析问题(parsing problem,用于上下文无关文法识别的有效算法)的研究是在60年代和70年代,它相当完善的解决了这个问题。现在它已是编译原理中的一个标准部分。 有限状态自动机(Finite Automation)和正则表达式(Regular Expression)同上下文无关文法紧密相关,它们与Chomsky的3型文法相对应。对它们的研究与Chomsky的研究几乎同时开始,并且引出了 表示程序设计语言的单词的符号方式。 人们接着又深化了生成有效目标代码的方法,这就是最初的编译器,它们被一直使用

13、至今。人们通常 将其称为优化技术(Optimization Technique),但因其从未真正地得到过被优化了的目标代码而仅仅改进了它的有效性,因此实际上应称作代码改进技术(Code Improvement Technique)。 当分析问题变得好懂起来时,人们就在开发程序上花费了很大的功夫来研究这一部分的编译器自动构 造。这些程序最初被称为编译器的编译器(Compiler-compiler),但更确切地应称为分析程序生成器(Parser Generator),这是因为它们仅仅能够自动处理编译的一部分。这些程序中最著名的是Yacc(Yet Another Compiler-compiler)

14、,它是由Steve Johnson在1975年为Unix系统编写的。类似的,有限状态自动机的研究也发展了一种称为扫描程序生成器(Scanner Generator)的工具,Lex(与Yacc同时,由Mike Lesk为Unix系统开发)是这其中的佼佼者。 在20世纪70年代后期和80年代早期,大量的项目都贯注于编译器其它部分的生成自动化,这其中就包括了代码生成。这些尝试并未取得多少成功,这大概是因为操作太复杂而人们又对其不甚了解。 编译器设计最近的发展包括:首先,编译器包括了更加复杂算法的应用程序它用于推断或简化程序中 的信息;这又与更为复杂的程序设计语言的发展结合在一起。其中典型的有用于函数

15、语言编译的Hindley-Milner类型检查的统一算法。其次,编译器 已越来越成为基于窗口的交互开发环境(Interactive Development Environment,IDE)的一部分,它包括了编辑器、连接程序、调试程序以及项目管理程序。这样的IDE标准并没有多少,但是对标准的窗口环境进 行开发已成为方向。另一方面,尽管近年来在编译原理领域进行了大量的研究,但是基本的编译器设计原理在近20年中都没有多大的改变,它现在正迅速地成为计 算机科学课程中的中心环节。 在20世纪90年代,作为GNU项目或其它开放源代码项目标一部分,许多免费编译器和编译器开发工具被开发出来。这些工具可用来编译所有的计算机程序语言。它们中的一些项目被认为是高质量的,而且对现代编译理论感兴趣的人可以很容易的得到它们的免费源代码。 大约在1999年,SGI公布了他们的一个工

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业/管理/HR > 营销创新

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号