第17讲 交叉编译.ppt

上传人:s****8 文档编号:82770377 上传时间:2023-03-26 格式:PPT 页数:19 大小:666KB
返回 下载 相关 举报
第17讲 交叉编译.ppt_第1页
第1页 / 共19页
第17讲 交叉编译.ppt_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《第17讲 交叉编译.ppt》由会员分享,可在线阅读,更多相关《第17讲 交叉编译.ppt(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、LOGO第十七讲第十七讲第十七讲第十七讲交叉编译交叉编译交叉编译交叉编译LINUX目录目录一、一、交叉编译基本概念交叉编译基本概念二、交叉编译环境的建立二、交叉编译环境的建立三、三、示例程序示例程序四、四、课课堂堂练习练习五、课后作业五、课后作业LINUX交叉编译基本概念交叉编译基本概念1.什么是交叉编译什么是交叉编译?简单地说,就是在一个平台上生成另一个平台上的可执行代码。简单地说,就是在一个平台上生成另一个平台上的可执行代码。所谓平台,实际上包含两个概念:体系结构(所谓平台,实际上包含两个概念:体系结构(Architecture)(硬硬件件)、操作系统(、操作系统(Operating Sy

2、stem)(软件软件)。同一个体系结构可以运行不同的操作系统;同一个体系结构可以运行不同的操作系统;同一个操作系统也可以在不同的体系结构上运行。同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的举例来说,我们常说的x86 Linux平台实际上是平台实际上是Intel x86体系结体系结构和构和Linux for x86操作系统的统称;而操作系统的统称;而x86 WinNT平台实际上平台实际上是是Intel x86体系结构和体系结构和Windows NT for x86操作系统的简称。操作系统的简称。交叉编译基本概念交叉编译基本概念2.为什么要交叉编译为什么要交叉编译?一个经常会被

3、问到的问题就是,一个经常会被问到的问题就是,“既然我们已经有了主机编译器,那为既然我们已经有了主机编译器,那为什么还要交叉编译呢?什么还要交叉编译呢?”1.有时是因为目的平台有时是因为目的平台(2440板子板子)上不允许或不能够安装我们所需要的上不允许或不能够安装我们所需要的编译器,而我们又需要这个编译器的某些特征;编译器,而我们又需要这个编译器的某些特征;2.有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;有时是因为目的平台上的资源贫乏,无法运行我们所需要编译器;3.有时又是因为目的平台还没有建立,连操作系统都没有,根本谈不上有时又是因为目的平台还没有建立,连操作系统都没有,根本谈

4、不上运行什么编译器。运行什么编译器。交叉编译基本概念交叉编译基本概念3.交叉编译常用英文单词交叉编译常用英文单词host 主机平台。主机平台。target 目的平台。目的平台。perfix 交叉编译器的安装位置。交叉编译器的安装位置。目录目录一、一、交叉编译基本概念交叉编译基本概念二、交叉编译环境的建立二、交叉编译环境的建立三、三、示例程序示例程序四、四、课课堂堂练习练习五、课后作业五、课后作业LINUX交叉编译环境的建立交叉编译环境的建立1.交叉编译环境组成交叉编译环境组成 基于基于linux操作系统的应用开发环境一般是由目标系统硬件(开操作系统的应用开发环境一般是由目标系统硬件(开发板)和

5、宿主发板)和宿主pc机所构成。机所构成。1.目标硬件开发板用于运行操作系统和系统应用软件。目标硬件开发板用于运行操作系统和系统应用软件。2.目标板所用到的操作系统的内核编译、应用程序的开发和调目标板所用到的操作系统的内核编译、应用程序的开发和调试则需要通过宿主试则需要通过宿主pc机来完成(所以称为交叉编译)。机来完成(所以称为交叉编译)。3.目标板和宿主机目标板和宿主机(PC)之间一般通过串口,并口或以太网接口之间一般通过串口,并口或以太网接口建立连接关系。建立连接关系。交叉编译环境的建立交叉编译环境的建立2.安装宿主机安装宿主机(PC)的软件的软件1.安装安装nfs服务器服务器sudo ap

6、t-get install nfs-kernel-server portmapgedit/etc/exports/home/study/study *(rw)sudo/etc/init.d/nfs-kernel-server restart 注注:文件夹的访问权限要设置成组和其它用户都读写的文件夹的访问权限要设置成组和其它用户都读写的 NFS NFS为为network file system network file system 的简称,最早由的简称,最早由sunsun公司开发,公司开发,一般一般NFSNFS广泛应用在集群服务器上,他的最大特点是可以通过网络广泛应用在集群服务器上,他的最大特

7、点是可以通过网络让不同的机器,不同的操作系统可以彼此的共享文件,所以它可让不同的机器,不同的操作系统可以彼此的共享文件,所以它可以看作一个简单的文件服务器以看作一个简单的文件服务器。2.安装安装ssh,用于在用于在linux和和window传输文件传输文件Sudo apt-get install openssh-server3.安装安装C/C+编译器编译器build-essentialSudo apt-get install build-essential4.安装语法安装语法,词法分析器词法分析器Sudo apt-get install bison flex交叉编译环境的建立交叉编译环境的建立

8、5.安装安装C函数库的函数库的man手册手册Sudo apt-get install manpage-dev6.解压解压ncurses,并安装并安装,没有它没有它,make menuconfig会出错会出错Tar zxvf ncurses.tar.gzcd ncurses-5.6./configure with-shared prefix=/usrmakemake install交叉编译环境的建立交叉编译环境的建立3.安装交叉编译工具安装交叉编译工具1、把你的编译工具(、把你的编译工具(arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2)放置某目录。放置某目录。解压

9、:解压:tar-jxvf arm-linux-gcc-3.4.5-glibc-2.3.6.tar.bz2 会在当前目录产生上述包的解压文件,在这个目录里面找到会在当前目录产生上述包的解压文件,在这个目录里面找到bin目目录,把这个录,把这个bin目录的绝对路径记录下载。目录的绝对路径记录下载。2、添加交叉编译工具进入系统的环境变量:、添加交叉编译工具进入系统的环境变量:Sudo gedit /etc/environment在在PATH后面加入你的交叉编译路径后面加入你的交叉编译路径接着重启或者注销一下就可以了。接着重启或者注销一下就可以了。重启完成后打开终端输入重启完成后打开终端输入arm-l

10、inux-gcc-v 看看有没有输出相关看看有没有输出相关的版本信息。的版本信息。交叉编译环境的建立交叉编译环境的建立4.常用交叉编译工具介绍常用交叉编译工具介绍$arm-linux-arm-linux-addr2line arm-linux-gasp arm-linux-objdump arm-linux-stringsarm-linux-ar arm-linux-ld arm-linux-ranlib arm-linux-striparm-linux-as arm-linux-nm arm-linux-readelfarm-linux-c+filt arm-linux-objcopy ar

11、m-linux-size我我们们来解来解释释一下上面生成的可一下上面生成的可执执行文件都是用来干什么的行文件都是用来干什么的add2line-将你要找的地址将你要找的地址转转成文件和行号,它要使用成文件和行号,它要使用 debug 信息信息。Ar-产产生、修改和解开一个存档文件生、修改和解开一个存档文件。As-gnu 的的汇编汇编器器。C+filt-C+和和 java 中有一种重中有一种重载载函数,所用的重函数,所用的重载载函数最后会被函数最后会被编编译转译转化成化成汇编汇编的的标标号,号,c+filt 就是就是实现这实现这种反向的种反向的转转化,根据化,根据标标号得到函数名号得到函数名。交叉

12、编译环境的建立交叉编译环境的建立Gasp-gnu 汇编汇编器器预编译预编译器器。Ld-gnu 的的连连接器接器Nm-列出目列出目标标文件的符号和文件的符号和对应对应的地址的地址Objcopy-将某种格式的目将某种格式的目标标文件文件转转化成另外格式的目化成另外格式的目标标文件文件Objdump-显显示目示目标标文件的信息文件的信息Ranlib-为为一个存档文件一个存档文件产产生一个索引,并将生一个索引,并将这这个索引存入存档文个索引存入存档文件中件中Readelf-显显示示 elf 格式的目格式的目标标文件的信息文件的信息Size-显显示目示目标标文件各个文件各个节节的大小和目的大小和目标标文

13、件的大小文件的大小Strings-打印出目打印出目标标文件中可以打印的字符串,有个默文件中可以打印的字符串,有个默认认的的长长度,度,为为4Strip-剥掉目剥掉目标标文件的所有的符号信息文件的所有的符号信息目录目录一、一、交叉编译基本概念交叉编译基本概念二、交叉编译环境的建立二、交叉编译环境的建立三、三、示例程序示例程序四、四、课课堂堂练习练习五、课后作业五、课后作业LINUX示例程序示例程序1.建立建立helloworld.c建立建立helloworld.c#includeint main(void)printf(”hello worldn”);return 0;示例程序示例程序2.交叉编

14、译交叉编译交叉编译交叉编译:$arm-linux-gcc helloworld.c-o helloworld$file helloworldhelloworld:ELF 32-bit LSB executable,ARM,version 1,dynamically linked(uses shared libs),not stripped上面的输出说明你编译了一个能在上面的输出说明你编译了一个能在 arm 体系结构下运行的体系结构下运行的 helloworld,证明你的编译工具做成功了。,证明你的编译工具做成功了。示例程序示例程序3.运行运行1.目标板目标板nfs到宿主机到宿主机mount-o nolock 192.168.6.240:/home/study/study/src/nfs-test2.运行运行cd/nfs-test./helloworld 目录目录一、一、交叉编译基本概念交叉编译基本概念二、交叉编译环境的建立二、交叉编译环境的建立三、三、示例程序示例程序四、四、课课堂堂练习练习五、课后作业五、课后作业LINUX课课后后练习练习1.课后练习课后练习把之前写过的程序,交叉编译到把之前写过的程序,交叉编译到S3C2440开发板上运行开发板上运行LOGOLINUX

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 生活常识

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com