嵌入式LINUX交叉编译环境及其建立方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
5建立引导编译器(bootstrap gcc)
9cc 套 件 只包含了一个工具程序(GNU编译器),不过 它还支持一些组件,如运行时库。本阶段将建立引 导编译器。该编译器只能支持C语言。等到C链接库 编译好之后,重新编译9c。才能提供完整的C十十支 持。同样 首 先 解压源代码包: #e d / h om e /build一tools # tar zx v fge e一2.95 .3. tar .gz 这样 将 生 成一个包含包内容的gee这里需要对源代 码做一些修改,否则后面的编译会出现错误:
五、交叉编译环境的建立方法与步骤
1. 下 载 源文件、补丁,准备编译的目录 2 编译前的准备工作 3 内核头文件设置 4 建立二进制工具(binutil) 5建立引导编译器(bootstrap gcc) 6 建立C链接库(glibc) 7 建立全套编译器(fulg cc)
嵌入式LINUX交叉编译环境及 其建立方法
课题的研究内容
嵌入式LINUX交叉编译环境及其建立方法 1)描述什么是交叉编译环境; 2)描述为何ARM嵌入式系统需要交叉编译环境; 3)说明ARM Linux交叉编译工具链的功能与作用, 特点; 4)简要说明如何获得交叉编译工具链文件,有哪些 文件?各文件的功能与作用; 5)交叉编译环境的建立方法与步骤。
这里 c onf iguer指定的-一target和-一perfix选项,也 是分别用来指定目标板类型和安装目录。此外,还 有一些建立引导编译器时需要的选项。-一without一 heade。告诉配置工具交叉编译器不需要目标板的系 统头文件。-一with一newlib说明不要使用glibc,因 为glibc尚未针对目标板完成编译的动作。-一enable 一languages选项用来告诉配置命令脚本,想让产生 的编译器支持哪些程序语言。因为这是个引导编译 器,所有只需要支持C语言。
七、实验结果
在windows的c++上运行的结果
在linux下运行结果
创建/目录先创建 xpz文件夹,然 后运用到vi编辑 器,创立名为 xpzz.c的文件, 然后退出执行
#c d g ee 一2.95.3/gcc/confi岁arm # vi t 一 lin ux 在 TA RG ET_ L IBGCC2_ C F I.A GS 参 量 后 添 加语句一 Dinhibit_libc和一D_加r_posix_ha 接下 来 就 可以在我们为引导编译器准备的目录里设定建 立引导编译器的配置并进行安装了: #c d b u ild一boot一gee # 二 / gee一2.95.3/configuer 一 一target=/ home/ann一linux without一headers 一 一一prefix=/home/tools一一 一with一newlib 一一enable languages=c # ma ke a l 一 gee #m ak e i ns tal 一gee
交叉编译环境发展背景
交叉编译(cross-compilation)是指,在某个主机平台上(比如PC上) 用交叉编译器编译出可在其他平台上(比如ARM上)运行的代码的过程。 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。 我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言 编写的代码(比如 C代码)编译(compile)成计算机可以识别和执行的二 进制代码。比如,我们在 Windows 平台上,可使用 Visual C++ 开发环境, 编写程序并编译成可执行程序。这种方式下,我们使用 PC 平台上的 Windows 工具开发针对 Windows 本身的可执行程序,这种编译过程称为 native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开 发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常 见的 ARM 平台,其一般的静态存储空间大概是 16 到 32 MB,而 CPU 的主频 大概在 100MHz 到 500MHz 之间。这种情况下,在 ARM 平台上进行本机编 译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需 要很大的存储空间,并需要很强的 CPU 运算能力。为了解决这个问题,交 叉编译工具就应运而生了。通过交叉编译工具,我们就可以在 CPU 能力很 强、存储控件足够的主机平台上(比如 PC 上)编译出针对其他平台的可执 行程序。
Hale Waihona Puke 2 编译前的准备工作 建立 交 叉 编译环境,需要将各种二进制工具程 序集成进工具链,其中包括如binutils,C 编译器(gee) 以及C链接库(glibc)等。从F5F的FrP网站帅://ftp.gn /gnu/其他的镜像网站可下载到所需的GNU工具。 因为这些包的维护和发行完全是各自独立的,当与 其它套件的不同版本合用时,并不是套件的所有版 本都能够顺利完成建立的工作。想要选用合适的版 本,必须试着找到适合的主机和目标板的组合。当 然,也可以从书籍和网络上查找可用的组合。 本机的内核配置:
3 内核头文件设置
内核 头 文 件设置是建立工具链的第一步。一般,内核 的每个版本都会包含两种档案:经tar.gzi p压缩的文件(扩 展名为.tar.gz )和经tar.gz ip压缩的文件(扩展名为.tar.bz 2)。这两个文件都包含相同的内核,只是以‘tar.bz 2结 尾的文件比较小一点。这里我们使用的是.tar.gz 文件。
ARM Linux交叉编译工具链的功能
在裁减和制定Linux内核用于嵌入式系统之前, 由于一般嵌入式研发系统存储大小有限,通常都要 在性能优越的PC上建立一个用于目标机的交叉编译 工具链,用该交叉编译工具链在PC上编译目标机上 要运行的程式。交叉编译工具链是个由编译器、连 接器和解释器组成的综合研发环境,交叉编译工具 链主要由binutils、gcc和glibc 3个部分组成。有时出 于减小 libc 库大小的考虑,也能用别的 c 库来代替 glibc,例如 uClibc、dietlibc 和 newlib。
六实验源程序(64位数的输出)
#include <stdio.h> #include <string.h> #include <stdlib.h> int main(void) { long x = 1111111111; long y = 1111111222; printf("one: x = %d, y = %d\n", x, y); printf("two: x = %d, ", x); printf("y = %d\n", y); printf("three: x = %I64d, y = %I64d\n", x, y); printf("four: x = %I64d, ", x); printf("y = %I64d\n", y); printf("five: x = %lld, y = %lld\n", x, y); printf("six: x = %lld, ", x); printf("y = %lld\n", y); return 0; }
LINUX交叉编译环境发展趋势
随着 嵌 人 式消费类电子产品的大量开发应用以及 Lintix操作系统的不断完善强大,嵌人式Lintix系统越 来越多地进人人们的生活中。基于Linux操作系统的 开发环境一般有目标系统硬件(开发板)和宿主PC机构 成。目标板用于运行操作系统和应用软件,而目标 板所使用的操作系统内核编译,应用程序开发调试 却是通过宿主PC机来完成的。这就需要引人交叉编 译环境的概念。引人交叉编译的原因是由于一般目 标板的资源都比较有限,需要有强大的宿主PC机为 它完成大部分的调试编译任务。
工具 链 只 需要一组可供目标板使用的有效头文件即可, 因此,不必在每次重新设定内核配置之后重建工具链, 这些头文件在早先的程序中就已经提供了。除非变更处 理器或系统类型,否则该步不需重复。
4 建立二进制工具(binutil)
bin util s包 中的工具常用来操作二进制目 标文件,该包中最重要的两个工具就是GNU 汇编器as和链接器Id。设置binutils包的第一 步,就是解压源码,con figu , 执行的时候 会检查主机上是否存在某些资源,并且会为 包中每个工具程序产生适当的Makefile。还 可以通过适当的选项传递给configure来控制 Makefile的输出。其中,-一target选项指定这 是为哪个目标板建立binutilso-一prefix选项能 够指定安装目录。最后一条make instal命令 执行完毕,则binutils工具建立完毕。
6 建立C链接库(glibc)
glib c由 许 多链接库组成,是极其重要的一个 软件组件。目标板必须靠它来执行或开发大部分 的应用程序。
7 建立全套编译器(fulg cc)
现在 可 以 为目标板安装支持C和C++的完整编译 器。因为我们已经在“引导编译器设置”中从包中取 出了编译器的源码,所有不必重复此步骤。文件的移 植,至此 。 整 个跨平台开发工具链都已设置好,可 以直接在PC平台上编写、编译和链接基于ARM 的程序
目录
课题研究的目的意义。 交叉编译环境发展背景。 LINUX交叉编译环境发展趋势。 ARM Linux交叉编译工具链的功能。 交叉编译工具链文件,有哪些 文件?各 文件的功能与作用; 交叉编译环境的建立方法与步骤。
课题研究的目的意义
市场需求:嵌入式系统是当前最热门最有发展前 途的IT应用领域之一。嵌入式系统用在一些特定 专用设备上,通常这些设备的硬件资源非常有限, 并且对成本很敏感,有时对实时响应的要求很高。 条件限制:由于嵌入式设备的性能局限性,cpu运 算能力差,存储空间不足等原因,往往不能通过 本机编译来得到所需软件的可执行程序。 解决方法:通过交叉编译工具,我们就可以在 CPU能力很强、存储空间足够的主机平台上编译 出针对其他平台的可执行程序。