ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:535.12KB ,
资源ID:5314434      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bingdoc.com/d-5314434.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(嵌入式操作系统实验一建立交叉编译环境文档格式.docx)为本站会员(b****1)主动上传,冰点文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰点文库(发送邮件至service@bingdoc.com或直接QQ联系客服),我们立即给予删除!

嵌入式操作系统实验一建立交叉编译环境文档格式.docx

1、 1、虚拟硬盘尽量分配大一些,之后再扩就比较麻烦。2、共享文件夹不要有中文路径,不然挂载后看不到中文名称文件。3、安装操作系统时,不能断网,需要下载各种资源,不然会异常。详细内容2:安装gcc-4.1替换操作系统中的gcc-4.4.5,用它编译交叉编译器gcc-3.4.5和库文件glibc-2.3.2、gdb-6.5。为了完成这样的目标,我们需要安装与脚本相关的工具,需要修改crosstool中的配置文件arm.dat以指定编译的目标位arm-linux。需要修改crosstool中的脚本文件,指定编译的源文件和目的文件夹(后来建立),指定配置文件为gcc-3.4.5-glibc-2.3.2.

2、dat,在该配置文件中,指定了交叉编译器和调试器、C库的版本。最后运行脚本,实现了对GCC工具包的安装,包括gcc预处理器、汇编器、编译器、链接器、调试器、反汇编工具等等。整个实验中我们需要的资源是crosstool-0.43.tar、gdb-6.5.tar、linux-2.6.8.tar,将放置在共享文件夹的crosstool工具拷贝到主文件夹下并解压,将gbd和linux文件拷贝到crosstool文件夹,拷贝linux-2.6.8.tar是因为编译时需要内核文件。实验步骤实验准备:在实验准备中,在安装完增强工具包(安装vmware tools实现与XP文件共享)并重启之后,需要实现对共享

3、文件夹的自动挂载,只需要修改etc目录中的配置文件rc.local,rc.local是很多linux系统管理员的偏爱,因为凡是需要随系统自动启动的服务、程序等,都可以放在里面。$sudo mkdir /mnt/share$sudo mount -t vboxsf embedded /mnt/shared上面三句话实现了将共享文件夹embeded挂载到了share上。gedit /etc/rc.local将第2句命令添加在exit之前,实现了自动挂载功能。一、搭建编译环境1、安装于脚本运行相关及其他的工具bison、flex 、build-essential、patch 、libncurses5

4、-dev。$sudo apt-get install bison flex build-essential patch libncurses5-dev运行如下:相关:Linux下有一个SUDO命令,使得普通用户能够行使超级用户的部份权利,在/etc/sudoers中设置了可执行sudo指令的用户。若其XX的用户企图使用sudo,则会发出警告的邮件给管理员。用户使用sudo时,必须先输入密码,之后有5分钟的有效期限,超过期限则必须重新输入密码。apt-get 一个下载的命令参数有install 安装 update 更新 remove 移除 check 检查。比如: sudo apt-get in

5、stall samba-3.0-7 下载并安装一个名字为samba-3.0-7的程序在UNIX早期时代,编写一个编译器是一件非常耗时的工作。人们为了简化开发过程,开发了Lex和YACC程序来解决第一个任务,根据用户描述的语言,生成能够解决问题的C/C+语言代码,供开发者使用。将源代码文件分解为各种词汇(Lex);找到这些词汇的组成方式(YACC);GNU软件协会开发了Flex和BISON,其功能与LEX和YACC基本兼容,并且在Lex和YACC提供的功能的基础上进行了各种扩展。FLex能够将输入数据流分类为各类词汇,为后来的语法分析做准备Bison该文件本质上就是一个C语言的源代码,作用就是对

6、输入文件进行语法分析。GNU Bison在Linux下的安装非常简单。你可以去它的官方网站上下载安装包自行安装,ubuntu系统下更简单的方法同样是直接在命令行敲入命令实现。Ubuntu缺省情况下,并没有提供C/C的编译环境,因此还需要手动安装。如果单独安装gcc以及g+比较麻烦,幸运的是,Ubuntu提供了一个build-essential软件包。 查看该软件包的依赖关系,可以看到以下内容:$ apt-cache depends build-essentialbuild-essentialDepends: libc6-dev Depends: gcc g+ make dpkg-dev也就是说

7、,安装了该软件包,编译c/c+所需要的软件包也都会被安装。因此如果想在Ubuntu中编译c/c+程序,只需要安装build-essential软件包就可以了。可以推测我们实验中的gcc-4.4.5就是在安装这个软件包时安装的。用make menuconfig配置linux内核,要安装libncurses5-dev 套件。2、更换sh更换shell语言解释器$sudo mv /bin/sh /bin/sh.old /备份解释器 $sudo ln -sf bash /bin/sh /更改软链接,规定使用bash对脚本进行解释$echo $SHELL运行如下:/显示环境变量的值ln是linux中一个

8、非常重要命令。它的功能是为某一个文件在另外一个位置建立一个同不的链接,这个命令最常用的参数是-s,具体用法是:ln -s 源文件 目标文件。当我们需要在不同的目录,用到相同的文件时,我们不需要在每一个需要的目录下都放一个必须相同的文件,我们只要在某个固定的目录,放上该文件,然后在其它的 目录下用ln命令链接(link)它就可以,不必重复的占用磁盘空间。我们输入gcc时,执行的就是它的链接。用ls -l命令去察看,可以看到link的路径了。Ubuntu默认使用dash,而不是bash,这是因为由于dash更小,运行更快,还与POSIX兼容而crosstool脚本运行需要用bash进行解释。需要把

9、Ubuntu默认的dash改为bash。表现为 /bin/sh 软链接到了/bin/dash,而不是传统的/bin/bash。echo $SHELL功能是显示获知环境变量$SHELL的值。何谓环境变量?在所处的环境中, 那些供系统或应用程序取用而固定存在的一种特殊变量。称之.环境变量可由系统预定或由您自行定义及修改, 又称为整体变量.也就是说: 不管你身处何方,这些变量的值都跟着你的环境而存在。常见的环境变量:$SHELL 使用哪一种shell$TERM 终端机的型态$MAIL 邮件收件位置$PATH 程序搜寻路径。3、更换gcc$gcc -v /查看当前的GCC版本信息显示如下:gcc ve

10、rsion 4.4.5我们需要用gcc-4.1版本来生成交叉编译器。$sudo apt-get install gcc-4.1 /获取并安装gcc-4.1ls gcc* /使用通配符,显示usr/bin目录下与gcc有关的目录File gcc / file 是检测文件类型的命令,显示当前的gcc指向gcc-4.4编译器rm gcc /删除gcc命令ls gcc* /看到,已经没有了gccln -s gcc-4.1 gcc/建立从gcc到gcc-4.1的链接Ls gcc* /新的gccgcc -v /查看新的编译器版本信息,显示已经更换到了gcc-4.12、准备相关资源$mkdir /home/

11、ww/embedded /在主文件夹下建立一个文件夹$cd /home/ww/embedded /进入该文件夹$cp /mnt/shared/crosstool-0.43.tar.gz ./ 将crosstool工具拷贝到这个文件夹并解压$tar -xvzf crosstool-0.43.tar.gz $cd crosstool-0.43$cp /mnt/shared/gdb-6.5.tar.bz2 ./$cp /mnt/shared/linux-2.6.8.tar.bz2 ./ /进入工具文件夹,并把gdb和内核文件拷贝进来,以供脚本运行时使用。3、修改配置文件Crosstol工具要想在本机

12、上顺利运行必须修改其配置文件,也就是做一下移植。表现为修改编译的目标,告诉它源文件在哪,编译到什么地方,编译什么版本的gcc和C库函数。1、修改 arm.dat,指定编译目标为:TARGET=arm-linuxgedit arm.dat /使用gedit比使用vi要方便的多2、修改demo-arm.sh。指定源文件所在的位置和编译结果存放的位置Gedit demo-arm.sh在执行过程中创建这个文件夹会出现权限错误,需要用管理员权限创建目标文件夹,并修改文件属性,命令如下: $sudo mkdir /opt/crosstool /建立文件夹 $sudo chmod 777 /opt/cros

13、stool /修改读写属性Ubuntu的许多操作是在终端中进行的在图形界面上,我们可以通过属性中的权限选项夹进行操作。但是一旦文件的属性显示当前用户没有读写权力时,无法在图形界面上修改权限。,通过sudo命令管理的文件是由root持有权限的,一般用户是无法改变的。常用方法如下:sudo chmod 600 (只有所有者有读和写的权限)sudo chmod 644 (所有者有读和写的权限,组用户只有读的权限)sudo chmod 700 (只有所有者有读和写以及执行的权限)sudo chmod 666 (每个人都有读和写的权限)sudo chmod 777 (每个人都有读和写以及执行的权限)3、

14、修改要编译的gcc版本和库文件版本。选用gcc-3.4.5-glibc-2.3.2,在最后一行前加上#表示注释。gedit gcc-3.4.5-glibc-2.3.2.dat 查看要编译的gcc/glibc/gbd版本4、开始编译$cp demo-arm.sh arm.sh/备份脚本$./arm.sh/开始运行脚本,编译。过一段时间之后,查看安装了哪些工具:$ls /opt/crosstool/gcc-3.4.5-glibc-2.3.2/arm-linux/bin相当于手工安装了gcc、库文件、二进制开发包binutil、gbd等工具5、配置环境变量为了不使你每次使用交叉编译工具的时候都要输入

15、绝对路径,你需要配置环境变量,将你的交叉编译工具存放的位置的路径增加到PATH变量中:$vim /.bashrc 用VI编辑器打开bashrc文件增加如下一行:Export PATH=$PATH:/opt/crosstool/gcc-3.4.5-glibc-2.3.2/arm-linux/bin添加程序搜索路径。类似于在编译环境中添加头文件路径一样,系统自动会在添加的路径中自动寻找目标。刷新bashrc $source /.bashrc6、编译程序,测试安装的正确性1.编写hello.c$arm-linux-gcc hello.c /编译该源程序可看到输出了ARM体系结构下的可执行文件,格式为

16、ELF, 当前的X86是没法办运行的,交叉编译,面向不同的处理器。收获:1、虚拟机的安装流程,共享文件夹的自动挂载,及添加自启动指令的方法。2、学会了如何利用crosstool脚本安装交叉编译环境,课堂上讲了如何手工安装gcc/库文件/binutil开发包,加上嵌入式系统设计实验课上直接获取GUN工具链,基本掌握了三种建立交叉编译环境的方法。3、Linux的基本指令如:cd ls cp rm mkdir exit tar file 连接指令ln 超级用户指令sudo 获取安装指令apt-get install mv 更新系统指令sudo aptitude update 、获取变量值echo 通

17、配符的使用,cd+.tab、4、设置环境变量的方法,可以大大方便开发,而且对指令的运行,有了更深的认识。可以想象,cd /ls/cp等这些在usr/bin中的基本应用程序的路径已经添加在了PATH中。这样用户在中断中输入的时候,内核可以找到这个程序并执行。5、接触了两种不同的脚本命令解释器。6、利用ln链接和环境变量都可以方便开发,但是降低了可读性,增加了理解难度7、学会使用sudo chmod修改文件夹的属性8、VI指令:i插入、dd删去一行,shift+zz保存并退出。Delete删除字符。9、对于编辑类的工作,gdit更好用10、新建虚拟机就是新买了一台机器,其实就是在硬盘里多了两个文件

18、夹,一个配置文件夹,一个虚拟机文件夹,删掉之后就什么都没了。11、为什么使用交叉开发?嵌入式系统多采用交叉编译的方式,在本机编译好的程序是不能在本机运行的,需要通过特定的手段(例如烧写,下载等)安装到目标系统上执行。这种编译运行的方法比较繁琐,是受到实际条件限制的。大多数的嵌入式系统目标板系统资源都很有限,无论是存储空间还是CPU处理能力,都很难达到编译程序的要求。而且很多目标板是没有操作系统的,需要通过其他的机器编译操作系统和应用程序。12、交叉开发又为什么选择LINUX?按照直觉的想法,开发嵌入式linux程序主机当然用linux系统,没错,直觉是正确的。只有每天使用linux,你才能不断的了解linux,才能成为一个优秀的嵌入式linux开发人员。这是最重要的windows上一个的问题是缺少GNU的工具链,虽然有的公司和开源社区发布了windows下的GNU工具链。但他们往往更新较慢,而且也未必可靠。cygwin提供了一个linux的模拟环境,在上面可以建立嵌入式linux工具链,但它依然更新较慢,可靠性依然可能是一个问题。Linux环境下有完整的而强大GUN的开发工具链。

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2