Linux交叉编译环境及工具介绍.ppt_第1页
Linux交叉编译环境及工具介绍.ppt_第2页
Linux交叉编译环境及工具介绍.ppt_第3页
Linux交叉编译环境及工具介绍.ppt_第4页
Linux交叉编译环境及工具介绍.ppt_第5页
已阅读5页,还剩18页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

LINUX软件开发交叉编译环境 及工具介绍,冯立强,第一部分:交叉编译环境 第二部分:Makefile介绍 第三部分:一体化电源开发环境,第一部分:交叉编译环境,为什么要交叉编译:,1、代码编写平台 X86 PC 2、编译平台 编译器 3、可执行文件运行平台 ARM 综上:有时是因为目标平台上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;有时是因为目标平台上的资源贫乏,无法运行我们所需要的编译器;有时又是因为目标平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器,什么是交叉编译:,在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译器。这个编译过程就叫交叉编译。 简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。,Linux下交叉编译环境包括:,这是一个由编译器、连接器和解释器组成的综合开发环境。 主要包括: 1、针对目标系统的编译器gcc; gcc(gnu collect compiler)是一组编译工具的总称。它主要完成的工作任务是“预处理”和“编译”,以及提供了与编译器紧密相关的运行库的支持,如libgcc_s.so、libstdc+.so等 2、针对目标系统的二进制工具binutils; The GNU Binutils are a collection of binary tools. binutils提供了一系列用来创建、管理和维护二进制目标文件的工具程序,如汇编(as)、链接(ld)、静态库归档(ar)、反汇编(objdump)、elf结构分析工具(readelf)、无效调试信息和符号的工具(strip)等。通常,binutils与gcc是紧密相集成的,没有binutils的话,gcc是不能正常工作的。 3、目标系统的标准c库glibc,有时出于减小libc 库大小的考虑,你也可以用别的c库来代替glibc,例如uClibc、newlib等; glibc是gnu发布的libc库,也即c运行库。glibc是linux系统中最底层的api(应用程序开发接口),几乎其它任何的运行库都会倚赖于glibc。glibc除了封装linux操作系统所提供的系统服务外,它本身也提供了许多其它一些必要功能服务的实现 4、目标系统的linux内核头文件。,建立交叉编译环境:,建立交叉编译环境:,1、建立内核头文件 主要是生成include/linux/version.h 和 include/linux/autoconf.h 文件,这是编译 glibc 是要用到的,version.h 和 autoconf.h 文件的存在,也说明了你生成了正确的头文件。 2、创建binutils。 这个过程结束后,会创建类似arm-linux-ld等工具。binutils是一组开发工具,包括链接器、汇编器以及其他用于目标文件和档案的工具.首先安装软件包binutils是非常重要的,因为glibc和gcc会针对可用的连接器和汇编器进行多种测试,以决定打开某些特性。 3、创建一个交叉编译版本的gcc(称为bootstrap gcc)。 在这个过程中只能编译C程序,而不能编译C+程序。创建一个完整的交叉编译版本gcc,需要交叉编译版本的glibc及其头文件,而交叉编译版本的glibc是通过交叉编译版本的gcc创建的。面对这个先有鸡还是先有蛋的问题,解决办法是先编译仅支持C语言的bootstrap gcc编译器,并禁止支持线程。 4、创建一个交叉编译版本的glibc。 这里最容易出现问题。glibc是一个提供系统调用和基本函数的C语言库,比如open,malloc和printf等,所有动态链接的程序都要用到它。创建glibc需要的时间很长。 5、重新创建gcc(称为full gcc)。 因为前面创建gcc的过程没有编译C+编译器,现在glibc已经准备好了,所以这个步骤将产生一个更完整的full gcc编译器。,龙腾蓝天1808交叉编译环境:,1、解压缩到指定目录 tar zxvf tool.tar.gz 2、进入linux-devkit目录 3、./environment-setup 4、进入linux-devkit/bin目录,为arm-arago-linux-gnueabi-g+等工具建立软链接。例如:ln s arm-arago-linux-gnueabi-g+ arm-linux-g+ 5、编辑/etc/profile ,添加环境变量。,第二部分 Makefile介绍,Makefile工具介绍:,make命令执行时,需要一个 makefile 文件,以告诉make命令需要怎么样的去编译和链接程序。 一个工程中的源文件不计数,其按类型、功能、模块分别放在若干个目录中,makefile定义了一系列的规则来指定,哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个Shell脚本一样,其中也可以执行操作系统的命令。 makefile带来的好处就是“自动化编译”,一旦写好,只需要一个make命令,整个工程完全自动编译,极大的提高了软件开发的效率。 make是一个命令工具,是一个解释makefile中指令的命令工具,一般来说,大多数的IDE都有这个命令,比如:Delphi的make,Visual C+的nmake,Linux下GNU的make。可见,makefile都成为了一种在工程方面的编译方法。,一体化电源Makefile文件介绍:,一体化电源代码目录结构: main-主程序 bin-可执行文件和规约so库 debug-存放主程序各文件的目标文件中间目录 include-主程序用头文件目录 monitor src-主程序和规约库用头文件目录 ptlmodule-存放规约库文件目录 Makefile-根目录Makefile文件,一体化电源Makefile文件介绍:,一体化电源Makefile文件介绍:,一体化电源Makefile文件介绍:,一体化电源Makefile文件介绍:,一体化电源Makefile文件介绍:,一体化电源Makefile文件介绍:,第三部分 一体化电源开发环境,一体化电源的开发环境:,1、宿主机 X86 PC Vmware Ubuntu 10.04 LTS 2.6.32-21 2、目标板 龙腾蓝天1808,NFS:,NFS为为网络文件系统(Network File System)的缩写,NFS最早是由Sun公司于1984年开发出来的,其目的就是让不同计算机不同操作系统之间可以彼此共享文件。由于NFS使用起来非常方便,因此很快得到了大多数的UNIX/Linux系统的广泛支持 提高程序开发和下载的效率 配置: 1、配置宿主机:编辑/etc/exports mkdir /home/nfs /home/nfs 192.168.1.*(rw,sync,no_ro

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论