《Linux基础PPT课件第十章交叉编译环境.ppt》由会员分享,可在线阅读,更多相关《Linux基础PPT课件第十章交叉编译环境.ppt(25页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第九章第九章 内容回顾内容回顾嵌入式系统简介嵌入式系统服务器和客户端Subversion的基本操作1 交叉编译环境交叉编译环境交叉编译环境交叉编译环境第十章2本章目标本章目标嵌入式系统的开发环境是什么;能够熟练使用掌握交叉编译环境建立的方法;如何进行交叉编译。3本章结构本章结构交叉开发简介交叉开发简介交叉编译环境建立交叉编译环境建立为什么需要交叉开发为什么需要交叉开发交叉编译与链接交叉编译与链接GNU交叉工具链交叉工具链交叉开发环境的组成要素交叉开发环境的组成要素开源开源GNU交叉开发环境交叉开发环境常用工具介绍常用工具介绍主要工具使用主要工具使用交叉调试交叉调试交叉工具链展开交叉工具链展开4
2、10.1.1 为什么需要交叉开发为什么需要交叉开发台式软件从“源码程序”到“机器码文件”的过程:510.1.1 为什么需要交叉开发为什么需要交叉开发嵌入式软件从“源码程序”到“机器码文件”的过程:610.1.1 为什么需要交叉开发为什么需要交叉开发需要交叉开发环境(CrossDevelopmentEnvironment)的支持是嵌入式应用软件开发时的一个显著特点交叉开发环境是指编译、链接和调试嵌入式应用软件的环境它与运行嵌入式应用软件的环境有所不同,通常采用宿主机目标机模式。710.1.1 为什么需要交叉开发为什么需要交叉开发交叉开发环境810.1.2 交叉开发环境的组成要素交叉开发环境的组成
3、要素宿主机宿主机 目标机目标机 交叉工具交叉工具一个编译器,它是编译器工具链前端的一部分。一个汇编器,它是编译器工具链后端的一部分。一个链接器,它是编译器工具链后端的另一部分。用于处理可执行程序和库的一些基本工具,比如strings。910.1.3 交叉编译与链接交叉编译与链接交叉编译器和交叉链接器是能够在宿主机上运行,并且能够生成在目标机上直接运行的二进制代码的编译器和链接器例如在基于ARM体系结构的gcc交叉开发环境中arm-linux-gcc是交叉编译器arm-linux-ld是交叉链接器。1010.1.4 交叉调试交叉调试交叉调试(CrossDebug)又常常被称为远程调试(Remot
4、eDebug),是一种允许调试器以某种方式控制目标机上被调试进程的运行方式,并具有查看和修改目标机上内存单元、寄存器以及被调试进程中变量值等各种调试功能的调试方式。1110.1.4 交叉调试交叉调试嵌入式系统的特点:调试器和被调试进程运行在不同的机器上调试器通过某种通信方式与被调试进程建立联系,如串口、并口、网络、DBM、JTAG或者专用的通信方式。在目标机上一般会具备某种形式的调试代理,它负责与调试器共同配合完成对目标机上运行着的进程的调试。目标机可能是某种形式的系统仿真器1210.2 开源开源GNU交叉开发环境交叉开发环境GNU目前已经推出的软件主要由Emacs功能强大的编辑环境,GCC性
5、能优异的多平台的C,C+,Fortran编译器和其他40多种软件。其中GCC的成功为GNU带来了前所未有的影响。GCC是一种可以在11种硬件平台上编译出可执行程序的超级编译器,而且其执行效率更是惊人,与一般的编译器相比平均效率要高20%-30%。1310.3 GNU交叉工具链交叉工具链方法一分步编译和安装交叉编译工具链所需要的库和源代码,最终生成交叉编译工具链。方法二通过Crosstool脚本工具来实现一次编译生成交叉编译工具链方法三直接通过网上(ftp.arm.kernel.org.uk)下载已经制作好的交叉编译工具链。构建交叉编译工具链方法1410.3.1 交叉工具链展开交叉工具链展开版本
6、的armgcc交叉编译工具,一般我们使用它编译版本的内核源码;安装#tarxvfzarm-linux-gcc-2.95.3.tgzC/版本的armgcc交叉编译工具,一般我们使用它编译版本的内核源码;#tarxvfzarm-linux-gcc-3.4.1.tgzC/执行命令,将把arm-linux-gcc(版本2.95.3和3.4.1)分别安装到/usr/loca/arm/2.95.3 和/usr/loca/arm/3.4.1 目录1510.3.2 常用常用工具介绍工具介绍名称归属作用arm-linux-asbinutils编译ARM汇编程序arm-linux-arbinutils把多个.o合
7、并成一个.o或静态库(.a)arm-linuxran-libbinutils为库文件建立索引,相当于arm-linux-ar-sarm-linux-ldbinutils连接器(Linker),把多个.o或库文件连接成一个可执行文件arm-linux-objdumpbinutils查看目标文件(.o)和库(.a)的信息arm-linux-objcopybinutils转换可执行文件的格式arm-linux-stripbinutils去掉elf可执行文件的信息.使可执行文件变小arm-linux-readelfbinutils读elf可执行文件的信息arm-linux-gccgcc编译.c或.S开
8、头的C程序或汇编程序arm-linux-g+gcc编译c+程序1610.3.3 主要工具使用主要工具使用arm-linux-gccarm-linux-ararm-linux-ranlibarm-linux-objdumparm-linux-readelfarm-linux-striparm-linux-copydump17本章本章总结总结交叉开发简介交叉开发简介交叉编译环境建立交叉编译环境建立为什么需要交叉开发为什么需要交叉开发交叉编译与链接交叉编译与链接GNU交叉工具链交叉工具链交叉开发环境的组成要素交叉开发环境的组成要素开源开源GNU交叉开发环境交叉开发环境常用工具介绍常用工具介绍主要工具
9、使用主要工具使用交叉调试交叉调试交叉工具链展开交叉工具链展开交叉编译环境中包括交叉编译环境中包括宿主宿主,目标机的角色目标机的角色arm-linux-gcc是交叉编译器 arm-linux-ld是交叉链接器。18实验实验任务1:交叉开发环境的建立交叉开发环境的建立任务2:交叉开发工具的使用交叉开发工具的使用19任务任务1注意事项提示1:注意交叉工具链建立在哪个目录20任务任务2注意事项提示1:注意交叉工具使用的命令参数21任务任务1注意事项提示1:注意配置文件加载确定交叉编译工具已经建立22任务任务2注意事项提示1:NFS服务设置中防火墙是否关闭。23任务任务3注意事项提示1:文件系统内容的获取方式。24任务任务4注意事项提示1:JFFS2工具使用权限。25