Linux交叉编译环境及工具介绍.ppt

上传人:max****ui 文档编号:6375412 上传时间:2020-02-24 格式:PPT 页数:23 大小:1.65MB
返回 下载 相关 举报
Linux交叉编译环境及工具介绍.ppt_第1页
第1页 / 共23页
Linux交叉编译环境及工具介绍.ppt_第2页
第2页 / 共23页
Linux交叉编译环境及工具介绍.ppt_第3页
第3页 / 共23页
点击查看更多>>
资源描述
LINUX软件开发交叉编译环境及工具介绍 冯立强 第一部分 交叉编译环境第二部分 Makefile介绍第三部分 一体化电源开发环境 第一部分 交叉编译环境 为什么要交叉编译 1 代码编写平台X86PC2 编译平台编译器3 可执行文件运行平台ARM综上 有时是因为目标平台上不允许或不能够安装我们所需要的编译器 而我们又需要这个编译器的某些特征 有时是因为目标平台上的资源贫乏 无法运行我们所需要的编译器 有时又是因为目标平台还没有建立 连操作系统都没有 根本谈不上运行什么编译器 什么是交叉编译 在一种计算机环境中运行的编译程序 能编译出在另外一种环境下运行的代码 我们就称这种编译器支持交叉编译器 这个编译过程就叫交叉编译 简单地说 就是在一个平台上生成另一个平台上的可执行代码 这里需要注意的是所谓平台 实际上包含两个概念 体系结构 Architecture 操作系统 OperatingSystem 同一个体系结构可以运行不同的操作系统 同样 同一个操作系统也可以在不同的体系结构上运行 举例来说 我们常说的x86Linux平台实际上是Intelx86体系结构和Linuxforx86操作系统的统称 而x86WinNT平台实际上是Intelx86体系结构和WindowsNTforx86操作系统的简称 Linux下交叉编译环境包括 这是一个由编译器 连接器和解释器组成的综合开发环境 主要包括 1 针对目标系统的编译器gcc gcc gnucollectcompiler 是一组编译工具的总称 它主要完成的工作任务是 预处理 和 编译 以及提供了与编译器紧密相关的运行库的支持 如libgcc s so libstdc so等2 针对目标系统的二进制工具binutils TheGNUBinutilsareacollectionofbinarytools 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 称为bootstrapgcc 在这个过程中只能编译C程序 而不能编译C 程序 创建一个完整的交叉编译版本gcc 需要交叉编译版本的glibc及其头文件 而交叉编译版本的glibc是通过交叉编译版本的gcc创建的 面对这个先有鸡还是先有蛋的问题 解决办法是先编译仅支持C语言的bootstrapgcc编译器 并禁止支持线程 4 创建一个交叉编译版本的glibc 这里最容易出现问题 glibc是一个提供系统调用和基本函数的C语言库 比如open malloc和printf等 所有动态链接的程序都要用到它 创建glibc需要的时间很长 5 重新创建gcc 称为fullgcc 因为前面创建gcc的过程没有编译C 编译器 现在glibc已经准备好了 所以这个步骤将产生一个更完整的fullgcc编译器 龙腾蓝天1808交叉编译环境 1 解压缩到指定目录tarzxvftool tar gz2 进入linux devkit目录3 environment setup4 进入linux devkit bin目录 为arm arago linux gnueabi g 等工具建立软链接 例如 ln sarm 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 VisualC 的nmake Linux下GNU的make 可见 makefile都成为了一种在工程方面的编译方法 一体化电源Makefile文件介绍 一体化电源代码目录结构 main 主程序bin 可执行文件和规约so库debug 存放主程序各文件的目标文件中间目录include 主程序用头文件目录monitorsrc 主程序和规约库用头文件目录ptlmodule 存放规约库文件目录Makefile 根目录Makefile文件 一体化电源Makefile文件介绍 一体化电源Makefile文件介绍 一体化电源Makefile文件介绍 一体化电源Makefile文件介绍 一体化电源Makefile文件介绍 一体化电源Makefile文件介绍 第三部分一体化电源开发环境 一体化电源的开发环境 1 宿主机X86PCVmwareUbuntu10 04LTS2 6 32 212 目标板龙腾蓝天1808 NFS NFS为为网络文件系统 NetworkFileSystem 的缩写 NFS最早是由Sun公司于1984年开发出来的 其目的就是让不同计算机不同操作系统之间可以彼此共享文件 由于NFS使用起来非常方便 因此很快得到了大多数的UNIX Linux系统的广泛支持提高程序开发和下载的效率配置 1 配置宿主机 编辑 etc exportsmkdir home nfs home nfs192 168 1 rw sync no root squash ubuntu etc init d nfs kernel serverstartcentos servicenfsstart2 开发板挂载 mount tnfs onolock192 168 1 138 home nfsnfs VI ctags taglist cscope
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!