




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、嵌入式系统实验指导书韩桂明 赵志鹏 张锟目录实验一:vmware虚拟机安装与使用4一:实验目的4二、实验内容及步骤4三、实验仪器和设备17四、实验报告要求17实验二:linux操作系统的配置与安装18一:实验目的18二、实验内容及步骤18三、实验仪器和设备28四、实验报告要求28实验三:linux常用操作指令29一:实验目的29二、实验内容29三、实验仪器和设备31四、实验报告要求31实验四:linux下编辑器的使用32一:实验目的32二、实验内容及步骤32三、实验仪器和设备34四、实验报告要求34实验五:linux下c语言编程 实现阶乘运算与素数求解35一:实验目的35二、实验内容及步骤35
2、三、实验仪器和设备35四、实验报告要求35补充:36实验六:gun make管理项目与gdb程序调试41一:实验目的41二、实验内容及步骤41三、实验仪器和设备45四、实验报告要求45实验七:linux shell编程46一:实验目的46二、实验内容及步骤46三、实验仪器和设备46四、实验报告要求46实验八:arm+linux的嵌入式开发工具链的建立47一:实验目的47二、实验内容及步骤47三、实验仪器和设备52四、实验报告要求53实验一:vmware虚拟机安装与使用一:实验目的1了解vmware的基本基本功能;2了解在vmware虚拟机中如何安装系统; 3熟练使用vmare虚拟机。二、实验内
3、容及步骤 1、 实验内容 a. vmware虚拟机的安装 b. vmware虚拟机的配置 c. 在vmware虚拟中安装系统2、 安装步骤 a 双击安装程序后来到vmware workstation安装向导界面。b. 选择安装类型c. 我选择将vmware workstation安装在默认的路径下d. 配置快捷方式e. 确定无误后单击“install”f. 安装ingg. 输入产品序列号h. 安装完成i.重启计算机j. 安装完成k. 在虚拟机窗口规划依次展开“文件”“新建”虚拟主机l. 出现“新建虚拟机向导”窗口m. 建议选择“自定义”方便后面配置虚拟机内存,如果你的内存够大(512m以上),
4、可以选择“典型”。说明一下,这些配置在安装好虚拟机后还是可以更改的。n. 选择需要安装的“客户操作系统”。 o. 输入虚拟机名和存放虚拟机文件的文件夹的路径:p. 添加网络类型:对于图中出现的可供选择的网络类型vmware workstation帮助文件中是这样定义的: q. 指定虚拟磁盘容量:建议不要勾选复选框,这样创建的虚拟磁盘将会如图中描述的那样大小随着对虚拟磁盘安装操作系统和应用软件的多少而增加。大小可以保持默认的8gb,这对安装常用的操作系统和应用软件来说已经足够了。r. 安装xp,设置虚拟机winxp的属性,鼠标点击一下虚拟机winxps. 点击setting后可得以下界面,这里就
5、可以选择所用的cd-rom类型,找到xp映象文件。 t. 开始安装xp系统 u. 对虚拟硬盘进行分区v. 完成xp安装三、实验仪器和设备 pc机、vmware软件和xp系统盘四、实验报告要求 1. 比较两款以上的虚拟机的共同点和不同点 2. 对本次实验写多于300字以上的实验心得实验二:linux操作系统的配置与安装一:实验目的1掌握如何在wmware中安装linux;2掌握如何配置符合自己需要linux系统; 3熟练掌握linux两种安装模式。二、实验内容及步骤 1、 实验内容 a. 图形模式下安装linux,并配置符合自己要求的linux系统 b. 文本模式下安装linux,并配置符合自己
6、要求的linux系统 c登陆linux系统,熟悉linux环境 2、 图形模式下安装linux步骤 a. 在虚拟机窗口规划依次展开“文件”“新建”虚拟主机 b. 选择linux安装类别,在linux安装中有两种安装模式text模式与图形模式c. 图形模式下安装linux,建议跳过cd检测,cd检测花比较长的时间d. 选择安装过程的安装语言e. 选择linux安装类型f. 选择磁盘分区模式,建议大家使用自动分区g. 配置引导装载程序h. 配置网络i. 配置防火墙j. 选择系统所能支持的语言k. 设置根口令,注意根口令是不能随意给普通用户知道的。l. 选择软件包组m. 安装程序开始安装刚才所配置的
7、软件包n. 安装过程中更换光盘o. 图形化界面(x)配置p. 重启系统q. 设置普通用户帐号与密码r. 输入用户帐号与密码s. 完成系统的启动3. 模仿上面的操作完成文本模式下linux系统的安装 本部分希望能独立完成三、实验仪器和设备 pc机、vmware虚拟机和red hat linux系统盘3张四、实验报告要求 1. 比较两种模式下安装方面的主要区别和注意事项 2. 对本次实验写多于300字以上的实验心得实验三:linux常用操作指令一:实验目的1了解linux下的字符界面;2掌握linux下常用命令; 3熟练掌握增加、删除用户和组方法。二、实验内容(一). 了解linux中的基本命令的
8、语法1. linux中有两种类型的命令:shell内部命令、外部应用程序命令2. 命令的格式:command option argument 命令名 选项 参数eg:ls ls l 3 .了解linux中的特定命令的参数列表以及相关的帮助man info help eg: man lsinfo lsls -help4.了解系统的文件和目录操作a名的组成:字母、数字、下划线、圆点b文件类型c.一些特别的文件目录(1)./ 根目录是最上级的目录,其它所有目录都在其下级(2)./ 的下级目录:bin 目录是可以执行的命令,蓝色的是目录,绿色的表示可以执行文件,浅蓝色的是链接文件,即快捷方式sbin
9、系统管理员执行的命令dev 设备存放的目录etc 所有的配置文件存放地usr 应用程序的主目录home 任何用户都在home中都有与其用户名同名的一个主目录root 超级管理员的主目录,它不在home目录下。lib 库文件存放地proc 内核在内存中的映像,可以在此查看到有关系统硬件信息.var 日志文件存放地src 系统内核文件 (二)每一个用户都会有一个主目录,直接敲cd 就可以进入用户的主目录。且每个用户都回有一个和用户名同名的目录即为它的主目录。路径:分为绝对路径和相对路径,以/目录开始的路径表示绝对路径,相对于当前目录的路径是相对路径,/ 用户名 主机名 当前目录名#超级用户用户名
10、主机名 当前目录名$普通用户1.显示当前所处的目录 pwd命令(显示绝对路径)2.进入其它目录 cd 命令 eg:cd /root3.进入上一级目录 cd .4.进入上一次进入的目录 cd 5.显示目录中的文件和子文件 ls 查看目录以及隐藏文件 ll a6.创建目录 mkdir 文件名 7.同时创建多个目录 mkdir 文件名1 文件名2 8.递归式创建目录树 mkdir p 111/11/19.删除空文件 rmdir 文件名10.删除非空文件 rm rf 文件名11.查找文件 find 目标 name 文件(可以使用通配符)12.显示文件内容cat filename一屏查看less fil
11、ename可以上下定位查看more filename多屏显示内容13. head:显示文件的前n行 head n 文件名14.tail: 显示文件的后n行 tail n 文件名15.cp:拷贝文件 cp 文件路径 新文件路径16.mv:移动文件 mv 源地址 目标地址 17.ln:创建符号链接文件 硬件链接 eg : ln abc.txt abc符号链接 eg : ln n abc.txt a (相当与创建快捷方式) 18.sort:排序命令,eg:sort /etc/passwd 19.grep:查找文件,eg:grep zhao /etc/passwd 20.wc:对文本文件进行统计,得出
12、其中的字符数、行数等信息21.du 文件名 查看文件的大小22.格式化硬盘为ext3文件系统 mkfs.ext3 /dev/sda(sdbsdc)21.格式化后挂载 mount t ext3 /dev/sda /home/目录名22.查看当前用户的所属 id23.查看当前是哪个用户登录 w 24.查看自己是谁 who am i /who25.查看ip ifconfig26.查看文件的格式 file 文件名 (如文本格式、目录格式等等)(三) 增加、删除用户和组用户和组的管理 1.创建用户:方法1:#useradd username p password 例:增加用户kk,密码kk #usera
13、dd kk p kk 方法2:#useradd 用户名 passwd 用户名 提示输入密码 确认密码或者直接修改/etc/passwd文件,然后手工创建相应的用户主目录 2.创建组 groupadd 组名passwd d一般不设置密码.设置该用户为该组的管理员gpasswd a 用户名组名.设置该用户的uid (超级管理员的uid为,0系统用户的500、500=系统外部用户(手动创建的)=65535) useradd u uid 用户名5.设置组uid groupadd g uid 组名.将该用户添加到该组中gpasswd a 用户名组名.查看用户属于哪个组grep 用户名/etc/group
14、 8.删除空组groupdel 组名.为组改名字groupmod n 新名原名10.为用户改名 usermod l 新名 原名 11注销系统的logout命令三、实验仪器和设备 pc机、vmware虚拟机和red hat linux 系统四、实验报告要求 1. 写出四种以上常用命令的使用参数功能。 2. 对本次实验写多于300字以上的实验心得实验四:linux下编辑器的使用一:实验目的 学习使用vi编辑器建立、编辑、显示以及加工处理文本文件。二、实验内容及步骤 (一)实验内容1.进入和退出vi。2.利用文本插入方式建立一个文件。3.在新建的文本文件上移动光标。4.对文本文件执行删除、复原、修改
15、、替换操作。(二)实验步骤1.进入和退出vi进入vi在系统提示符($)下输入命令vi和想要编辑(建立)的文件名(如example),便可进入vi。退出vi在命令方式下可有几种方法退出vi编辑器:wq 把编辑缓冲区的内容写到你编辑的文件中,退出编辑器,回到unix shell下。:zz 仅当作过修改时才将缓冲区内容写到文件上。:x 与 :zz 相同。:q! 强行退出vi。感叹号(!)告诉vi,无条件退出,丢弃缓冲区内容。这样,先前对该文件所做的修改或输入都被抛弃。2.新建文件在unix提示符$之后,输入命令 :vi myfile,然后按enter键。输入插入命令i(屏幕上看不到字符i)。然后,输
16、入以下文本行:to the only woman tht i, for mang year you have been my wife发现这两行有错,进行改正:按esc键,从插入方式回到命令方式。按光标上移键,使光标移到第一行。按光标左移键,使光标移到“tht”的第二个“t”处。输入i(这是插入命令),然后输入a。该行变成如下形式:to the only woman that i, 按光标右移键,使光标移到“i”上。我们想在“i”之后输入一个空格和单词“love”。为此,输入附加命令“a”。结果屏幕显示为:to the only woman that a i,这是怎麽回事儿?.原来是:我们先前
17、使用了插入命令i,至今并未用esc键返回命令方式。所以,输入的所有字符都作为输入文本予以显示。按esc键,返回命令方式。利用x命令删除错误字符。然后,进入插入方式,输入正确字符。最后输入如下所示的文本:tothe only woman that i love, for many year you have been mywwife i live you wich my life abd could not have picked much better.将你编辑的文本文件存盘。(利用 :wq 命令,或者 :x 命令)重新进入vi编辑程序,编辑上面的文件。(如:$ vi myfile)在屏幕上见
18、到myfile文件的内容。在屏幕底边一行显示出该文件的名称、行数和字符个数:“myfile”4 lines,130 characters它仍然有错,需进一步修改。将光标移到第二行的year的r处。输入a命令,添加字符s。按esc,回到命令方式。输入命令10space,光标移至何处? -光标右移10个字符位置。利用取代命令r将mywwife改为my wife。将光标移至第三行。输入新行命令o(大写字母),屏幕上有什麽变化? -光标移至上一行(新加空行)的开头。输入新行的内容: weve been through much together 此时,vi处于哪种工作方式?按esc,回到命令方式。将光
19、标移到第四行的live的i字母处。利用替换命令s将i改为o。在第四行的you之后添加单词dearly。将wich改为with。修改后的文本是以下内容:to the only woman that i love, for many years you have been my wifeweve been through much together i love you dearly with my life and could not have picked much better. 将该文件存盘,退出vi。重新编辑该文件。并将光标移到最后一行的have的v字母处,使用d$命令将v至行尾的字符都
20、删除。现在想恢复17步的原状,怎麽办?(使用复原命令u)使用dd命令删除第一行;将光标移至through的u字母处,使用c(大写字母)命令进行修改,随便输入一串字符。将光标移到下一行的开头,执行5x命令;然后执行重复命令(.)。屏幕内容乱了!现在想恢复17步的原状,怎么办?(不写盘,强行退出vi)能用u或u命令恢复屏幕原状吗?三、实验仪器和设备 pc机、vmware虚拟机和red hat linux 系统四、实验报告要求 1. 写出四种以上常用命令的使用参数功能。 2. 对本次实验写多于300字以上的实验心得实验五:linux下c语言编程 实现阶乘运算与素数求解一:实验目的1. 学习使用vi编
21、辑器建立、编辑、显示以及加工处理c语言代码。2. 掌握在linux下c语言的编译与连接方法3. 掌握gcc的使用方法与关键参数二、实验内容及步骤 (一)实验内容1.使用vi编写程序代码2.完成任意数阶乘运算程序的编写3.完成素数求解序程序编写(二)实验步骤1.进入vi编辑器编写所要的c语言程序代码2. 使用gcc对所编译代码进行编译与连接,要求编译与连接分开进行。3. 运行所编写的程序并检查运算结果。三、实验仪器和设备 pc机、vmware虚拟机和red hat linux 系统四、实验报告要求 1. 写出实现算法的流程和相对应程序 2. 对本次实验写多于300字以上的实验心得补充:阶乘:素数
22、定义:如果一个数的因数只有1和它自身,那么它就是素数。 如何判断一个数是否是素数? 可以用2到(n-1)之间的数作为除数,一个一个地去除n,如果都除不尽,n就为素数,如果其中有某个数能整除n,则n就不是素数。gcc参数详解gcc and g+分别是gnu的c & c+编译器 gcc/g+在执行编译工作的时候,总共需要4步 1.预处理,生成.i的文件 2.将预处理后的文件不转换成汇编语言,生成文件.s 3.有汇编变为目标代码(机器代码)生成.o的文件 4.连接目标代码,生成可执行程序 参数详解 -x language filename 设定文件所使用的语言,使后缀名无效,对以后的多个有效.也就是
23、根 据约定c语言的后缀名称是.c的,而c+的后缀名是.c或者.cpp,如果 你很个性,决定你的c代码文件的后缀名是.pig 哈哈,那你就要用这 个参数,这个参数对他后面的文件名都起作用,除非到了下一个参数 的使用。 可以使用的参数吗有下面的这些 c, objective-c, c-header, c+, cpp-output, assembler, and assembler-with-cpp. 看到英文,应该可以理解的。 例子用法: gcc -x c hello.pig -x none filename 关掉上一个选项,也就是让gcc根据文件名后缀,自动识别文件类型 例子用法: gcc -x
24、 c hello.pig -x none hello2.c -c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 例子用法: gcc -c hello.c 他将生成.o的obj文件 -s 只激活预处理和编译,就是指把文件编译成为汇编代码。 例子用法 gcc -s hello.c 他将生成.s的汇编代码,你可以用文本编辑器察看 -e 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里 面. 例子用法: gcc -e hello.c pianoapan.txt gcc -e hello.c | more 慢慢看吧,一个hello word 也要与处理成800行的代码 -o
25、制定目标名称,缺省的时候,gcc 编译出来的文件是a.out,很难听,如果 你和我有同感,改掉它,哈哈 例子用法 gcc -o hello.exe hello.c (哦,windows用习惯了) gcc -o hello.asm -s hello.c -pipe 使用管道代替编译中临时文件,在使用非gnu汇编工具的时候,可能有些问 题 gcc -pipe -o hello.exe hello.c -ansi 关闭gnu c中与ansi c不兼容的特性,激活ansi c的专有特性(包括禁止一 些asm inline typeof关键字,以及unix,vax等预处理宏, -fno-asm 此选项实
26、现ansi选项的功能的一部分,它禁止将asm,inline和typeof用作 关键字。 -fno-strict-prototype 只对g+起作用,使用这个选项,g+将对不带参数的函数,都认为是没有显式 的对参数的个数和类型说明,而不是没有参数. 而gcc无论是否使用这个参数,都将对没有带参数的函数,认为城没有显式说 明的类型 -fthis-is-varialble 就是向传统c+看齐,可以使用this当一般变量使用. -fcond-mismatch 允许条件表达式的第二和第三参数类型不匹配,表达式的值将为void类型 -funsigned-char -fno-signed-char -fsi
27、gned-char -fno-unsigned-char 这四个参数是对char类型进行设置,决定将char类型设置成unsigned char(前 两个参数)或者 signed char(后两个参数) -include file 包含某个代码,简单来说,就是便以某个文件,需要另一个文件的时候,就可以 用它设定,功能就相当于在代码中使用#include 例子用法: gcc hello.c -include /root/pianopan.h -imacros file 将file文件的宏,扩展到gcc/g+的输入文件,宏定义本身并不出现在输入文件 中 -dmacro 相当于c语言中的#defin
28、e macro -dmacro=defn 相当于c语言中的#define macro=defn -umacro 相当于c语言中的#undef macro -undef 取消对任何非标准宏的定义 -idir 在你是用#includefile的时候,gcc/g+会先在当前目录查找你所制定的头 文件,如果没有找到,他回到缺省的头文件目录找,如果使用-i制定了目录,他 回先在你所制定的目录查找,然后再按常规的顺序去找. 对于#include,gcc/g+会到-i制定的目录查找,查找不到,然后将到系 统的缺省的头文件目录查找 -i- 就是取消前一个参数的功能,所以一般在-idir之后使用 -idiraf
29、ter dir 在-i的目录里面查找失败,讲到这个目录里面查找. -iprefix prefix -iwithprefix dir 一般一起使用,当-i的目录查找失败,会到prefix+dir下查找 -nostdinc 使编译器不再系统缺省的头文件目录里面找头文件,一般和-i联合使用,明确 限定头文件的位置 -nostdin c+ 规定不在g+指定的标准路经中搜索,但仍在其他路径中搜索,.此选项在创建 libg+库使用 -c 在预处理的时候,不删除注释信息,一般和-e使用,有时候分析程序,用这个很 方便的 -m 生成文件关联的信息。包含目标文件所依赖的所有源代码 你可以用gcc -m hell
30、o.c来测试一下,很简单。 -mm 和上面的那个一样,但是它将忽略由#include造成的依赖关系。 -md 和-m相同,但是输出将导入到.d的文件里面 -mmd 和-mm相同,但是输出将导入到.d的文件里面 -wa,option 此选项传递option给汇编程序;如果option中间有逗号,就将option分成多个选 项,然后传递给会汇编程序 -wl.option 此选项传递option给连接程序;如果option中间有逗号,就将option分成多个选 项,然后传递给会连接程序. -llibrary 制定编译的时候使用的库 例子用法 gcc -lcurses hello.c 使用ncurse
31、s库编译程序 -ldir 制定编译的时候,搜索库的路径。比如你自己的库,可以用它制定目录,不然 编译器将只在标准库的目录找。这个dir就是目录的名称。 -o0 -o1 -o2 -o3 编译器的优化选项的4个级别,-o0表示没有优化,-o1为缺省值,-o3优化级别最 高 -g 只是编译器,在编译的时候,产生条是信息。 -gstabs 此选项以stabs格式声称调试信息,但是不包括gdb调试信息. -gstabs+ 此选项以stabs格式声称调试信息,并且包含仅供gdb使用的额外调试信息. -ggdb 此选项将尽可能的生成gdb的可以使用的调试信息. 实验六:gun make管理项目与gdb程序调
32、试一:实验目的1掌握makefile的编写方法与基本编写规则2掌握gdb调试程序的基本方法与技巧二、实验内容及步骤 1. 编写一个简单的makefile并按makefile的规则生成makefile中指定的可执行文件。a 参考程序/*calc.c*/#include calc.h#include float calcsquare(float fwidth, float flength)return (fwidth * flength);float calccircle(float radius)return (3.14 * radius * radius);/*calc.h*/#ifndef
33、_calc_h_#define _calc_h_float calcsquare(float fwidht, float flength);float calccircle(float fradius);#endif/*main.c*/#include inputdata.h#include outputdata.h#include calc.hint main()float fwidth;float flength;float fradius;float fresult; fwidth = getwidth();flength = getlength();outputsquare(calcs
34、quare(fwidth, flength);outputcircle(calccircle(fradius);return 0;/*inputdata.c*/#include #include inputdata.hfloat getwidth()float fwidth = 0;printf(please input the width of square:);scanf(%f,&fwidth);return fwidth;float getlength()float flength = 0;printf(please input the length of square:);scanf(
35、%f,&flength);return flength;float getradius()float fradius = 0;printf(please input the radius of cirlce:);scanf(%f,&fradius);return fradius;/*outputdata.h*/#ifndef _outputdata_h_#define _outputdata_h_void outputsquare(float area);void outputcircle(float area);#endif/*outputdata.c*/#include #include
36、outputdata.hvoid outputsquare(float area)printf(the area of square is %fn,area);void outputcircle(float area)printf(the area of circle is %fn,area);/*inputdata.h*/#ifndef _inputdata_h_#define _inputdata_h_float getwidth();float getlength();float getradiu();#endifb. 参考makefilecalculate: main.o calc.o
37、 outputdata.o inputdata.ogcc -g -o calculate main.o outputdata.o inputdata.o calc.omain.o: main.c inputdata.h outputdata.hgcc -g -o main.o -c main.cinputdata.o: inputdata.c inputdata.hgcc -g -o inputdata.o -c inputdata.coutputdata.o: outputdata.c outputdata.hgcc -g -o outputdata.o -c outputdata.ccal
38、c.o: calc.c calc.hgcc -g -o calc.o -c calc.cclean:rm *.o2. gdb调试程序练习,通过调试完成以下程序的改错/* * 该程序功能:* 将输入的十进制整数n通过函数dtoh转换为十六进制数,并将转换结果以字符串形式输出。* 例如:输入十进制数79,将输出十六进制4f。*/#include #include char trans(int x)int res;if(x 10) res = 0 + x;else /*1*/res = a + x ;return res; int dtoh(int n,char *str)int i = 0;whi
39、le(n != 0)stri = trans(n % 16); /*2*/n %= 16;i+;return i;int main()int i,k,n;char str128;scanf(%d, &n);k = dtoh(n, str);printf(%dd = ,n);for (i = 0; i k; i+) printf(%c, strk - i);printf(hn);return 0;三、实验仪器和设备 pc机、vmware虚拟机和red hat linux 系统四、实验报告要求1. 完成300makefile编写心得体会2. 完成300gdb调试程序的心得体会并写出正确程序实验七:
40、linux shell编程一:实验目的1熟悉shell常用命令与相关编程语法2掌握shell编程基本方法与规则二、实验内容及步骤 1 文件处理程序的编写,对书本67页的程序进行编写且理解他所实现的方法2利用函数测试目录与文件是否存在。程序参考68页3日志文件处理(选做)三、实验仪器和设备 pc机、vmware虚拟机和red hat linux 系统四、实验报告要求1 划出出实验内容1,2的实现流程图2写300字shell程序编写心得体会实验八:arm+linux的嵌入式开发工具链的建立一:实验目的1熟悉arm+linuxarm+linux的嵌入式开发工具链所需所有软件2掌握arm+linuxa
41、rm+linux的嵌入式开发工具链与相关软件的编译方法与配置参数选择二、实验内容及步骤实验内容:1. 下载源文件、补丁和建立编译的目录2. 建立内核头文件3. 建立二进制工具(binutils)4. 建立初始编译器(bootstrap gcc)5. 建立c库(glibc)6. 建立全套编译器(full gcc)7. 验证所配置工具链实验步骤:下载源文件、补丁和建立编译的目录1. 选定软件版本号我选的各个软件的版本是:linux-2.4.21+rmk1binutils-2.11.2gcc-2.95.3glibc-2.2.4glibc-linuxthreads-2.2.4gcc-2.95.3 的补
42、丁2. 建立工作目录首先,我们建立几个用来工作的目录:在你的用户目录,如在上课中用的目录为hgm,因此用户目录为 /home/hgm,先建立一个项目目录embedded-system。#pwd/home/hgm#mkdir embedded-system再在这个项目目录 embedded-system 下建立以下几个目录 setup-dir:存放下载的压缩包src-dir: 放你下载的 binutils、gcc 和 glibc 的源代码和用来编译这些源代码的目录。build-dir: 编译目录kernel:存放你的内核源代码和内核补丁tool-chain: 存放编译好的交叉编译工具和库文件pr
43、ogram: 存放编写好的程序doc:存放说明文档与脚本文件#cd embedded-system#mkdir setup-dir src-dir kernel build-dir tool-chain program doc3. 输出和环境变量我们输出如下的环境变量方便我们编译。#pwd/home/hgm/embedded-system/bupals# cd ./doc#mkdir scripts#vi hjbl输入以下内容export prjroot=/home/hgm/ embedded-system export target=arm-linuxexport prefix=$prjro
44、ot/tool-chainexport target_prefix=$prefix/$targetexport path=$prefix/bin:$path 如果你不惯用环境变量的,你可以直接用绝对或相对路径。我如果不用环境变量,一般都用绝对路径,相对路径有时会失败。环境变量也可以定义在.bashrc文件中,这样当你logout或换了控制台时,就不用老是export这些变量了。然后执行#.(这里有个空格,大家一定要注意) hjbl 4. 建立编译目录为了把源码和编译时生成的文件分开,一般的编译工作不在的源码目录中,要另建一个目录来专门用于编译。用以下的命令来建立编译你下载的binutils、g
45、cc和glibc的源代码的目录。#cd $prjroot/build-tools#mkdir build-binutils build-boot-gcc build-gcc build-glibc gcc-patchbuild-binutils-编译binutils的目录build-boot-gcc-编译gcc 启动部分的目录build-glibc-编译glibc的目录build-gcc-编译gcc 全部的目录gcc-patch-放gcc的补丁的目录: 建立内核头文件进入kernel 目录:#cd $prjroot /kernel解开内核源代码#tar -xzvf ./setup-dir/li
46、nux-2.4.21.tar.gz给 linux 内核打上你的补丁首先解压缩补丁#gunzip ./setup-dir/patch-2.4.21-rmk1.gz#cd linux-2.4.21#patch -p1 ./patch-2.4.21-rmk1mak编译内核生成头文件#make arch=arm cross_compile=arm-linux- menuconfig#make dep你也可以用 config 和 xconfig 来代替 menuconfig,但这样用可能会没有设置某些配置文件选项和没有生成下面编译所需的头文件。推荐大家用 make menuconfig,这也是内核开发人
47、员用的最多的配置方法。配置完退出并保存,检查一下的内核目录中的 include/linux/version.h 和 include/linux/autoconf.h 文件是不是生成了,这是编译 glibc 是要用到的,version.h 和 autoconf.h 文件的存在,也说明了你生成了正确的头文件。为了能正常编译内核,还要建立几个正确的链接#cd include#ln -s asm-arm asm#cd asm#ln -s arch-epxa arch#ln -s proc-armv proc接下来为你的交叉编译环境建立你的内核头文件的链接#mkdir -p $target_prefix
48、/include#ln -s $prjroot/kernel/linux-2.4.21/include/linux $target_prefix/include/linux#ln -s $prjroot/kernel/linux-2.4.21/include/asm-arm $target_prefix/include/asm也可以把 linux 内核头文件拷贝过来用$mkdir -p $target_prefix/include#cp -r $prjroot/kernel/linux-2.4.21/include/linux $target_prefix/include/linux#cp -
49、r $prjroot/kernel/linux-2.4.21/include/asm-arm $target_prefix/include/asm : 建立二进制工具(binutils)binutils是一些二进制工具的集合,其中包含了我们常用到的汇编器as和连接器ld。首先,解压binutils源文件。#cd $prjroot/src-dr#tar -xvjf ./set-dir/binutils-2.11.2.tar.bz2然后进入build-binutils目录配置和编译binutils。#cd $prjroot/build-dir/build-binutils#././src-dir/binutils-2.11.2/configure -target=$target -prefix=$prefix-target 选项是指出我们生成的是 arm-linux 的工具,-prefix 是指出我们可执行文件安装的位置。会出现很多 check,最后产生 makefile 文件。有了 makefile 后,我们来编译并安装 binutils,命令很简单。#make#ma
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 人口老龄化背景下居民储蓄模式转变调查问卷
- 关于制作一种折叠滤水杯的调查
- 阳光棚门头施工方案
- 镀锌风管改造施工方案
- 巡更系统施工方案
- 蜂窝铝墙板施工方案
- 绿化草坪恢复施工方案
- 2025年应急消防管理考试题及答案
- 5月龄宝宝体重身高标准表
- 5年级下册第10课
- 2025年阜阳幼儿师范高等专科学校单招职业技能考试题库学生专用
- 2025年安徽工业经济职业技术学院单招职业适应性测试题库附答案
- 2025湖北市政建设集团有限公司管理岗位公开竞聘14人笔试参考题库附带答案详解
- 2025年中国羊毛绒线市场调查研究报告
- 肥料登记申请书
- 矿产勘探数据分析-深度研究
- 人教版高中英语挖掘文本深度学习-选修二-UNIT-4(解析版)
- 2025年北京控股集团有限公司招聘笔试参考题库含答案解析
- 2024年07月江苏银行招考笔试历年参考题库附带答案详解
- 【MOOC】计算机组成与CPU设计实验-江苏大学 中国大学慕课MOOC答案
- 2023中华护理学会团体标准-注射相关感染预防与控制
评论
0/150
提交评论