第17讲 交叉编译.ppt_第1页
第17讲 交叉编译.ppt_第2页
第17讲 交叉编译.ppt_第3页
第17讲 交叉编译.ppt_第4页
第17讲 交叉编译.ppt_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

第十七讲交叉编译,LINUX,目录,一、交叉编译基本概念,二、交叉编译环境的建立,三、示例程序,四、课堂练习,五、课后作业,交叉编译基本概念,1.什么是交叉编译?,简单地说,就是在一个平台上生成另一个平台上的可执行代码。所谓平台,实际上包含两个概念:体系结构(Architecture)(硬件)、操作系统(OperatingSystem)(软件)。同一个体系结构可以运行不同的操作系统;同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86Linux平台实际上是Intelx86体系结构和Linuxforx86操作系统的统称;而x86WinNT平台实际上是Intelx86体系结构和WindowsNTforx86操作系统的简称。,交叉编译基本概念,2.为什么要交叉编译?,一个经常会被问到的问题就是,“既然我们已经有了主机编译器,那为什么还要交叉编译呢?”1.有时是因为目的平台(2440板子)上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;2.有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;3.有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上运行什么编译器。,交叉编译基本概念,3.交叉编译常用英文单词,host主机平台。target目的平台。perfix交叉编译器的安装位置。,目录,一、交叉编译基本概念,二、交叉编译环境的建立,三、示例程序,四、课堂练习,五、课后作业,交叉编译环境的建立,1.交叉编译环境组成,基于linux操作系统的应用开发环境一般是由目标系统硬件(开发板)和宿主pc机所构成。1.目标硬件开发板用于运行操作系统和系统应用软件。2.目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主pc机来完成(所以称为交叉编译)。3.目标板和宿主机(PC)之间一般通过串口,并口或以太网接口建立连接关系。,交叉编译环境的建立,2.安装宿主机(PC)的软件,1.安装nfs服务器sudoapt-getinstallnfs-kernel-serverportmapgedit/etc/exports/home/study/study*(rw)sudo/etc/init.d/nfs-kernel-serverrestart注:文件夹的访问权限要设置成组和其它用户都读写的NFS为networkfilesystem的简称,最早由sun公司开发,一般NFS广泛应用在集群服务器上,他的最大特点是可以通过网络让不同的机器,不同的操作系统可以彼此的共享文件,所以它可以看作一个简单的文件服务器。2.安装ssh,用于在linux和window传输文件Sudoapt-getinstallopenssh-server3.安装C/C+编译器build-essentialSudoapt-getinstallbuild-essential4.安装语法,词法分析器Sudoapt-getinstallbisonflex,交叉编译环境的建立,5.安装C函数库的man手册Sudoapt-getinstallmanpage-dev6.解压ncurses,并安装,没有它,makemenuconfig会出错Tarzxvfncurses.tar.gzcdncurses-5.6./configurewith-sharedprefix=/usrmakemakeinstall,交叉编译环境的建立,3.安装交叉编译工具,1、把你的编译工具(arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2)放置某目录。解压:tar-jxvfarm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2会在当前目录产生上述包的解压文件,在这个目录里面找到bin目录,把这个bin目录的绝对路径记录下载。2、添加交叉编译工具进入系统的环境变量:Sudogedit/etc/environment在PATH后面加入你的交叉编译路径接着重启或者注销一下就可以了。重启完成后打开终端输入arm-linux-gcc-v看看有没有输出相关的版本信息。,交叉编译环境的建立,4.常用交叉编译工具介绍,$arm-linux-arm-linux-addr2linearm-linux-gasparm-linux-objdumparm-linux-stringsarm-linux-ararm-linux-ldarm-linux-ranlibarm-linux-striparm-linux-asarm-linux-nmarm-linux-readelfarm-linux-c+filtarm-linux-objcopyarm-linux-size我们来解释一下上面生成的可执行文件都是用来干什么的add2line-将你要找的地址转成文件和行号,它要使用debug信息。Ar-产生、修改和解开一个存档文件。As-gnu的汇编器。C+filt-C+和java中有一种重载函数,所用的重载函数最后会被编译转化成汇编的标号,c+filt就是实现这种反向的转化,根据标号得到函数名。,交叉编译环境的建立,Gasp-gnu汇编器预编译器。Ld-gnu的连接器Nm-列出目标文件的符号和对应的地址Objcopy-将某种格式的目标文件转化成另外格式的目标文件Objdump-显示目标文件的信息Ranlib-为一个存档文件产生一个索引,并将这个索引存入存档文件中Readelf-显示elf格式的目标文件的信息Size-显示目标文件各个节的大小和目标文件的大小Strings-打印出目标文件中可以打印的字符串,有个默认的长度,为4Strip-剥掉目标文件的所有的符号信息,目录,一、交叉编译基本概念,二、交叉编译环境的建立,三、示例程序,四、课堂练习,五、课后作业,示例程序,1.建立helloworld.c,建立helloworld.c#includeintmain(void)printf(”helloworldn”);return0;,示例程序,2.交叉编译,交叉编译:$arm-linux-gcchelloworld.c-ohelloworld$filehelloworldhelloworld:ELF32-bitLSBexecutable,ARM,version1,dynamicallylinked(usessharedlibs),notstripped上面的输出说明你编译了一个能在arm体系结构下运行的helloworld,证明你的编译工具做成功了。,示例程序,3.运行,1.目标板nfs到宿主机mount-onolock192.168.6.240:/home/study/stu

温馨提示

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

评论

0/150

提交评论