嵌入式操作系统实验一建立交叉编译环境_第1页
嵌入式操作系统实验一建立交叉编译环境_第2页
嵌入式操作系统实验一建立交叉编译环境_第3页
嵌入式操作系统实验一建立交叉编译环境_第4页
嵌入式操作系统实验一建立交叉编译环境_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、嵌入式操作系统实验报告队友:张圣苗亚实验内容1、准备工作工作:安装 virtualbox虚拟机工具,并安装ubuntu10.10系统、增强 型工具,实现共享文件夹的自动挂载。2、利用crosstool提供的脚本安装和相关资源编译面向的ARM的GCC工具。详细内容1:安装虚拟机软件和虚拟机时要完成的主要步骤有:安装 virtualbox ,建立一台虚拟机,分配内存和硬盘,指定共享文件夹(主机和虚拟 机可共同操作),指定操作系统镜像文件路径(相当于光盘,第一次启动时安装), 安装虚拟操作系统,安装增强工具包,实现共享文件夹的自动挂载。有几点需要汪忠:1、虚拟硬盘尽量分配大一些,之后再扩就比较麻烦。

2、2、共享文件夹不要有中文路径,不然挂载后看不到中文名称文件。3、安装操作系统时,不能断网,需要下载各种资源,不然会异常。详细内容2需要安装与脚本相关的工具,需要修改crosstool中的配置文件 arm.dat以指定编译的目标位arm-linux。需要修改需要的资源实验步骤实验准备:在实验准备中,在安装完增强工具包(安装vmware tools实现与XP文件共享)并重启之后,需要实现对共享文件夹的自动挂载,只需要修改 etc目录中的 配置文件rc.local, rc.local是很多linux系统管理员的偏爱,因为凡是需要随系统 自动启动的服务、程序等,都可以放在里面。$sudo mkdir

3、/mnt/share$sudo mount -t vboxsf embedded /mnt/shared上面三句话实现了将共享文件夹embeded挂载到了 share上。gedit /etc/rc.local将第2句命令添加在exit之前,实现了自动挂载功能。实验一一、搭建编译环境1、安装于脚本运行相关及其他的工具 bison、flex、build-essentiak patch、 libncurses5-deu$sudo apt-get install bison flex build-essential patch libncurses5-de运行如下:update-alternative

4、s :使用 /usr/bin/f akeroot-sysv 来提 oot),于自动模式中.正在迨置 libalgorithm-diff - perl (1.19.02-1).正在设置 libalgorithm-merge-perl (0.08*1).正在设置 libncuSEs5-dev (5.7+29100626-Qubuntul) .正在设置 liKtdc+544-dun (4.4.4-14ubuntu5.1).正在设置 g+*-4,4 (4.4.4-14ubuntu5,l) ,一正在设置 g+ (4:4.4.4-lubuntu2).update-altematives:使用 /usr/b

5、in/g+ 来提供 /usr/b:正在设置 build-essential (11.5) .一相关:Linux下有一个SUDO命令,使得普通用户能够行使超级用户的部份权利,在/etc/sudoers中设置了可执行sudo指令的用户。若其未经授权的用户企图使用 sudo, 则会发出警告的邮件给管理员。用户使用 sudo时,必须先输入密码,之后有 5分钟的有效 期限,超过期限则必须重新输入密码。apt-get 一个下载的命令参数有install安装update 更新remove 移除check检查。比如:sudo apt-get install samba-3.0-7下载并安装一个名字为samba

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

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

8、ds: gccDepends: g+ Depends: make Depends: dpkg-dev也就是说,安装了该软件包,编译 c/c+所需要的软件包也都会被安装。因此如果想在Ubuntu中编译c/c+程序,只需要安装build-essential软件包就可以了 。可以推测我们实验中的。用 make menuconfig 配置 linux 内核,要安装 libncurses5-dev 套件。2、更换sh更换shell语言解释器$sudo mv /bin/sh /bin/sh.old 隔份解释器$sudo ln -sf bash /bin/sh /更改软链接,规定使用 bash对脚本进行解释

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

10、与POSIX 兼容而crosstool脚本运行需要用 bash进行解释。需要把Ubuntu默认的dash改为bash 。表现为/bin/sh软链接到了 /bin/dash ,而不是传统的/bin/bash 。echo $SHELL功能是显示获知环境变量 $SHELL的值。何谓环境变量在所处的环境中,那些供系统或应用程序取用而固定存在的一种特殊变量。称之.环境变量可由系统预定或由您自行定义及修改,又称为整体变量.也就是说:不管你身处何方,这些变量的值都跟着你的环境而存在。常见的环境变量:$SHELL使用哪一种shell$TERM终端机的型态$MAIL邮件收件位置$PATH程序搜寻路径。3、更换g

11、cc$gcc -v /查看当前的GCC版本信息显示如下:gcc version 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至U gcc-4.1 的链接Ls gcc* /新的 gccgcc -v小看新的编译器

12、版本信息,显示已经更换到了 gcc-4.1二、准备相关资源$mkdir /home/ww/embedded /森主文件夹下建立一个文件夹$cd /home/ww/embedded /进入该文件夹将crosstoolX具拷贝到这个文件夹并解压$cd crosstool-0.43进入工具文件夹,并把gdb和内核文件拷贝进来,以供脚本运行时使用。三、修改配置文件Crosstol工具要想在本机上顺利运行必须修改其配置文件,也就是做一下移植。表现为修改编译的目标,告诉它源文件在哪,编译到什么地方,编译什么版 本的gcc和C库函数。1、修改arm.dat,指定编译目标为:TARGET=arm-linuxg

13、edit arm.dat /位用gedit比使用vi要方便的多2、修改demo-arm.sht指定源文件所在的位置和编译结果存放的位置Gedit demo-arm.sh在执行过程中创建这个文件夹会出现权限错误,需要用管理员权限创建目标文件夹,并修改文件属性,命令如下:$sudo mkdir /opt/crosstool 建立文件夹$sudo chmod 777 /opt/crosstool 修改读写属性Ubuntu的许多操作是在终端中进行的在图形界面上,我们可以通过属性中的权限选项夹进行操作。但是一旦文件的 属性显示当前用户没有读写权力时,无法在图形界面上修改权限。,通过sudo命令管理的文件

14、是由root持有权限的,一般用户是无法改变的。常用方法如下:sudo chmod 600xxx (只有所有者有读和写的权限)sudo chmod 644 x x x (所有者有读和写的权限,组用户只有读的权限)sudo chmod 700 x x x (只有所有者有读和写以及执行的权限)sudo chmod 666 x x x (每个人都有读和写的权限)sudo chmod 777 x x X (每个人都有读和写以及执行的权限)3、修改要编译的gcc版本和库文件版本。查看要编译的gcc/glibc/gbcdfi本四、开始编译$cp demo-arm.sh arm.sh隔份脚本$./arm.sh

15、/开始运行脚本,编译。过一段时间之后,查看安装了哪些工具:相当于手工安装了 gCG库文件、二进制开发包 binutik gbd等工具五、配置环境变量为了不使你每次使用交叉编译工具的时候都要输入绝对路径,你需要配置环境变量,将你的交叉编译工具存放的位置的路径增加到PATH®量中:$vim /.bashrc 用VI编辑器打开bashrc文件增加如下一行:Export添加程序搜索路径。类似于在编译环境中添加头文件路径一样,系统自动会在添加的路径中自动寻找目标。刷新bashrc$source /.bashrc六、编译程序,测试安装的正确性1.编写 hello.c$arm-linux-gcc

16、hello.c /编译该源程序可看到输出了 ARM体系结构下的可执彳T文件,格式为 ELF,当前的X86是没法办运行的, 交叉编译,面向不同的处理器。收获:1、虚拟机的安装流程,共享文件夹的自动挂载,及添加自启动指令的方法。2、学会了如何利用 crosstool脚本安装交叉编译环境,课堂上讲了如何手工安装gcc/库文件/binutil开发包,加上嵌入式系统设计实验课上直接获取GUN工具链,基本掌握了三种建立交叉编译环境的方法。3、Linux的基本指令如: cd ls cp rm mkdir exit tar file 连接指令ln 超级用 户指令 sudo 获取安装指令apt-get inst

17、all mv 更新系统指令 sudo aptitudeupdate、获取变量值echo 通配符的使用,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、新建虚拟机就是新买了一台机器,其实就是在硬盘里多了两个文件夹,一个配置文件夹,一个虚拟机文件夹,删掉之后就什么都没了。11、为什么使用交叉开发?嵌入式系统多采用交叉编译的方式,在本机编译好的程序是不能在本机运行的,需要通过特定的手段(例如烧写,下载等)安装到目标系统上执行。这种编译运行的方法比较繁琐,是受到实际条件限制的。大多数的嵌入式系统目标板系统资源都很有限,无论是存储空间还是 CPU处理能力,都很难达到编译程序的要求。而且很多目标板是没有操作系统的,需要通过其他的机器编译操作系统和应用

温馨提示

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

评论

0/150

提交评论