- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
arm9件arm8
第八章创建交叉编译环境 嵌入式开发流程 主要内容 交叉编译基础知识 为嵌入式开发建立交叉编译环境 8.1 交叉编译基础知识 交叉编译就是在一个平台上生成另一个平台上的可执行代码。 这里说的平台分别指的是主机平台Host和目标平台Target。 就我们在ARM平台上移植Linux来说,Host是一台一般的PC机,它通过串口或网络接口与Target通信;Target是arm-linux平台(这里说的arm指的是平台所使用的CPU是ARM9处理器,linux指的是运行的操作系统是Linux)。 我们在Host上开发程序,并在这个平台上运行交叉编译器Cross Complier,编译我们的程序,而由Cross Complier生成的程序将在Target上运行。 8.1 交叉编译基础知识 需要交叉编译的原因: 首先,在项目的起始阶段,目标平台尚未建立,因此需要做交叉编译,以生成我们所需要的Bootloader以及kernel(因为Bootloader和kernel的源码需要经过交叉编译后才可以在目标平台上运行); 其次,当目标平台能启动之后,由于目标平台上资源的限制,当我们编译大型程序时,依然可能需要用到交叉编译。 8.2 为嵌入式开发建立交叉编译环境 建立交叉编译环境是进行Linux内核移植的第一步。 目前常用的交叉开发环境主要有开放和商业两种类型。 开放的交叉开发环境的典型代表是GNU工具链,目前已能够支持x86、ARM、PowerPC等多种处理器。 商业的交叉开发环境主要有Metrowerks CodeWarrior、ARM Software Development Toolkit等。 8.2.1 常用在ARM平台的GNU Toolchain arm-linux-gcc:交叉编译linux内核 arm-elf-gcc:主要交叉编译uclinux内核 arm-uclinux-gcc:交叉编译uclinux内核 主要下载网址: 为了在命令行中能够寻找到交叉编译器,我们需要把他所在的路径加入到PATH环境变量中 (例:/usr/local/arm/bin:$PATH )。 8.2.1 常用于ARM平台的GNU Toolchain sh脚本方式安装(.sh) sh arm-elf-toolssh tar解压方式安装(.tar.gz) tar zxvf arm-linux-gcc-2.95.3.tar.gz rpm安装包方式安装(.rpm) rpm –ivh arm-linux-gcc-2.95.3-3.i386.rpm rpm –ivh arm-linux-binutils-2.12.1-1.i386.rpm rpm –ivh arm-linux-glibc-2.2.5-1.i386.rpm 安装目录:/usr/local/bin/arm-elf-xxx /usr/local/arm-linux/bin/arm-linux-xxx /usr/local/arm-uclinux-tool/bin/arm- uclinux-xxx 8.2 自己制作嵌入式交叉编译器 对于交叉编译器,可以自己生成,也可以从网上下载。区别在于从网上下载的非常简单方便,但很难找到适合自己所选择的平台。 下面将介绍如何通过编写bash shell脚本的方法,利用网上的开源代码一步步地创建了交叉编译器。 8.2.2 自己制作交叉编译器 因为Linux内核版本多,不同的版本存在不同的bug,加之众多版本的工具链也存在不同的bug,这些bug针对不同的硬件(比如CPU类型等),需要多方测试,寻找合适的补丁程序。 以下是已选定的构建交叉编译环境的工具链版本: BINUTILS_VERSION=2.16 GCC_VERSION=3.4.3 GCCCORE_VERSION=3.4.3 LINUX_VERSION=2.4.21 GLIBC_VERSION=2.3.5 GLIBCTHREADS_VERSION=2.3.5 8.2自己制作交叉编译器 binutils工具包:包括连接器、汇编器以及其他用于目标文件和档案的工具,如as汇编器,ld连接器等。 gcc工具包:工具链的主角,包括c编译器gcc、c++编译器g++等。 glibc库:提供系统调用的基本函数的C库,比如,printf、open等。 gdb调试工具:运行在target上的调试程序,通过串口和TCP/IP和主机连接,进行远距离调试。 8.2自己制作交叉编译器 步骤: 1、创建编译环境; 2、创建binutils(会创建arm-linux-ld等工具); 3、创建一个交叉编译
文档评论(0)