版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、PAGE 可视化建模与UML课程结业报告项目名称: 大学生毕业论文评审系统 专 业: 软件工程 班 级: 11软件本(2)班 学 号: 姓 名: 完成日期: 2014年6月6日 目录1. 前言介绍 TOC o 1-3 h z u HYPERLINK l _Toc31103 2.大学生毕业论文评审系统的需求分析 PAGEREF _Toc31103 3 HYPERLINK l _Toc8652 2.1 系统需求的项目背景4 HYPERLINK l _Toc9896 2.2 系统的需求分析4 HYPERLINK l _Toc10618 2.3 系统的功能模块图5 HYPERLINK l _Toc32
2、62 3. 用例图设计建模 PAGEREF _Toc3262 5 HYPERLINK l _Toc28351 3.1 创建用例图 PAGEREF _Toc28351 5 HYPERLINK l _Toc10953 3.2 用例说明 PAGEREF _Toc10953 6 HYPERLINK l _Toc30813 4. 类图设计建模 PAGEREF _Toc30813 7 HYPERLINK l _Toc31161 4.1 类图简介 PAGEREF _Toc31161 7 HYPERLINK l _Toc10696 4.2 建立类图8 HYPERLINK l _Toc26085 4.3 类图说
3、明10 HYPERLINK l _Toc21156 5. 交互建模 PAGEREF _Toc21156 10 HYPERLINK l _Toc22357 5.1 交互建模简介 PAGEREF _Toc22357 10 HYPERLINK l _Toc7655 5.2 建立顺序图11 HYPERLINK l _Toc27636 5.3 建立协作图 PAGEREF _Toc27636 16 HYPERLINK l _Toc32115 6. 行为建模 PAGEREF _Toc32115 17 HYPERLINK l _Toc29492 6.1 行为建模简介 PAGEREF _Toc29492 17
4、HYPERLINK l _Toc31651 6.2 建立状态图18 HYPERLINK l _Toc11249 6.3 建立活动图 PAGEREF _Toc11249 19 HYPERLINK l _Toc27176 7. 学习小结 PAGEREF _Toc27176 20 HYPERLINK l _Toc32334 7.1.建模 PAGEREF _Toc32334 20 HYPERLINK l _Toc32334 7.2 UML介绍 22 HYPERLINK l _Toc32334 7.3.公共机制 PAGEREF _Toc32334 20 HYPERLINK l _Toc32334 7.4
5、. 图24 HYPERLINK l _Toc32334 7.5 类图24 HYPERLINK l _Toc24810 7.6 学习心得25 HYPERLINK l _Toc31138 8. 参考文献 PAGEREF _Toc31138 26前言介绍 需求工程是随着软件工程的发展而产生的。在软件开发的初级时期,软件规模不大,软件开发所关注的是代码编写,软件需求很少受到重视。在引入软件生命周期的概念后,需求工程成了软件生命周期的第一阶段。随着软件系统规模的扩大,以及为了解决“软件危机”而引起的软件工程技术与方法的发展,需求工程在整个软件开发与维护过程中就显得越来越重要了。人们普遍认识到,充分研究软
6、件需求可以避免开发系统时的盲目性,能够直接关系到软件的成功与否。随着软件工程的研究和应用的逐渐深入,人们同时认识到软件需求不再仅限于软件开发的最初阶段,它贯穿于系统开发的整个生命周期。许多项目开发过程中出现的诸多问题都与需求工程阶段没有合理完整的进行需求获取、分析有关。由此可见,需求工程对于项目开发尤其是大型项目的研发的至关重要的作用。 需求工程的准确含义,没有严格统一的表述。一种比较常用的解释如下: 需求工程是指应用已证实有效的技术、方法进行需求分析、确定客户需求,帮助分析人员理解问题并确定目标系统的所有外部特征的一门学科;它通过合适的工具和记号系统地描述待开发系统及其行为特征和相关约束,形
7、成需求文档;并对用户不断变化的需求演进给与支持。需求工程可以分为需求开发和需求管理两部分。需求开发包括需求获取、需求分析、编写需求规格、需求验证;这些子学科涵盖了为软件和软件相关产品收集、评估和记录需求相关的所有活动。需求管理包括需求变更控制、版本控制、需求跟踪、需求状态跟踪等内容。 另一方面,领域用户通常不知道如何按软件开发的要求去描述他们的需求,而且,他们一开始常常对自己的需求仅有一个模糊的认识,如果没有任何提示和引导,就不可能立刻给出正确而完整的需求描述。确定系统的需求是一个连续的过程,开发人员在开发系统之前不可能完全详细地说明一个系统的真正需求。一个不完整的需求获取和管理过程,会对项目
8、的生命周期产生多米诺骨牌的效应。用户需求的缺失会导致系统需求的缺失,从而导致设计单元及功能的缺失,并最终导致系统不能实现预期的功能,或者需要在后期花费较大的代价来修正或补充这些功能,导致项目延期、产生严重的质量问题或超出项目预算。因此,及时、准确地获取用户需求,是决定软件项目能否取得成功的关键步骤之一。PAGE 392.大学生毕业论文评审系统的需求分析2.1 系统需求的项目背景伴随着我国高等教育的逐渐扩展,每届的大学身越来越多,因此每年在高校毕业的大学生也越来越多,因而每年的高校毕业论文的评审工作越发复杂。毕业生都要经历关注论文选题、选题、提交论文、和导师沟通交流、修改稿件、定稿等过程,导师要
9、经历开题、确定学生、评阅每份稿件、定稿、评分等多个环节。我们可以发现,以往的大学生论文评审的过程很熟悉但处理起来却很繁琐,耗费着大量的精力。因此,建立一个统一的毕业论文处理系统是十分必要的,不但可以减轻老师和学生的负担,使得繁琐的流程有了一个统一的流水线似的发展,不容易在过程中出现错误。2.2 系统的需求分析大学生论文评审系统的需求分析反应系统能够完成的各项功能,并且能够简单明了地把要各项的功能展示给所有参与人员。大学生论文评审系统的功能分析如下所示:系统只针对系统管理员、毕业生以及评审老师这三类用户。系统允许用户注册各自的账号。系统分配用户权限。系统允许用户登录。系统允许修改个人账号信息。系
10、统提供评审老师开题。系统允许毕业生查看开题信息以及选题。系统提示毕业生检查并确定将要提交的论文。系统允许评审老师批阅论文。系统允许评审老师给毕业生论文评分。系统允许系统管理员录入毕业生论文答辩的成绩。系统允许系统管理员对毕业生和评审老师的用户信息进行增删查改。该系统允许系统管理员公布毕业生论文评审成绩该系统允许毕业生查询个人论文的评审结果成绩。2.3 系统的功能模块图 大学生毕业论文评审系统的功能模块图反映了大学生毕业论文评审系统的功能及各个功能之间的关系,具体的内容如图2.3.1。图2.3.1 大学生毕业论文评审系统功能模块图【功能模块图说明】 1)大学生毕业论文评审系统:包括用户管理、选题
11、管理、师生互动管理和论文管理四个模块。 2)用户管理:主要用于用户登入以及用户的信息管理。 3)选题管理:用于毕业生导师开题和毕业生选题。 4)师生互动管理:师生之间方便交流。 5)论文管理:用于对每位毕业生用户的论文修改、提交、批阅管理、成绩查询。 6)用户登录管理:按照毕业生、评审老师、管理员三类用户的不同权限登录系统。 7)用户信息管理:管理员可以对毕业生、评审老师两类用户的信息进行增删查改。 8)评审老师开题:评审老师在系统中公布选题。 9)毕业生选题管理:毕业生从公布的选题中选题。 10)毕业生留言:毕业生在论文中遇到的问题,可以在线给自己老师留言。 11)评审老师回复:老师在进入系
12、统后,发现学生留言,及时回复。 12)论文提交管理:毕业生最多提交论文次数最多三次,以最后一次为终稿,最终稿不可在修改。 13)论文批阅管理:评审老师对毕业生提交的论文进行批阅,评分。 14)成绩管理:论文评审的总成绩为导师评定论文分数的60%加上毕业生论文答辩分数的40%。3.用例图设计建模3.1 创建用例图系统主要由 毕业生、评审老师、系统管理员这三个二元关联类的事项组成,毕业生与大学生论文评审系统之间的选题管理事项,以及毕业生导师与大学生论文评审系统管理事项。选题者即毕业生,代表做论文行为。开题者即导师,它代表公布选题、评阅论文、论文评分。系统服务器管理员操作,它模拟管理员与毕业生和毕业
13、生导师之间的中介,验证的行为,整个系统在服务器、工作站(毕业生、毕业生导师)运行,因此整个系统参与者是毕业生、毕业生导师、管理员。通过对系统的用例进行分析,建立用例图如下图3.1.1。图3.1.1 大学生毕业论文评审系统用例图3.2 用例说明登录系统用例,用于方便要进行操作并且没有登录系统的用户登录系统。沟通交流用例,方便毕业生和毕业生导师之间就论文问题可以在线交流。论文选题用例,用于毕业生选取毕业论文论题。提交稿件用例,用于毕业生向系统提交论文。查询成绩用例,用于毕业生查询自己的成绩详情。论文总成绩用例,用于系统计算论文的总成绩。答辩分数录入用例,用于系统管理员向系统录入答辩成绩。维护用户信
14、息用例,用于管理员管理毕业生和毕业生导师的用户信息。论文开题用例,用于毕业生导师公布论文论题。评分。4.类图设计建模4.1 类图简介类图是最常用的UML图,显示出类、接口以及它们之间的静态结构和关系;它用于描述系统的结构化设计。类图最基本的元素是类或者接口。类图一般包含3个组成部分。第一个是类名;第二个是属性(attributes);第三个是该类提供的方法,类名部分是不能省略的,其他组成部分可以省略。4.2 建立类图 (1)毕业生类:该对象直接与服务器联系,登录、验证身份,得到论文选题的唯一身份,然后在规定的时间内,确认论文题目,之后进行论文提交和修改。另可联系成绩查询类查询论文总成绩及论文评
15、语等。(2)毕业生导师类:该对象直接与服务器联系,登录、验证身份,在一定的时间内论文开题并进行论题公布,对毕业生提交的论文进行评阅并给出评语,并对毕业生终稿进行评分。(3)管理员类:此类对象直接与系统进行交互,与毕业生类、毕业生导师类进行交互,管理其信息并设置其权限,另将导师发布的考试安排、考试成绩及试卷答案上传至考试记录供学生查询。(4)论文库类:包括问题论文编号、论文题目、论文提交时间。由管理员和导师类共同维护修改。(5)论文成绩类:包括论文评分、论文答辩分数、总成绩三个属性。毕业生可依据学生编号、论文题目、提交论文时间查询到相应论文分数及试论文评语等信息。(6)交流平台类:包括毕业生编号
16、、导师编号、交流信息三个属性。毕业生可以通过该类实现与导师交流互动。(7)公告栏类:包括公告编号、公告信息、公告日期三个属性。用户都可以可以通过该类查看公告信息。根据以上描述,可以发现该系统中有七个类,类的属性,根据类的描述及属性,画出系统类图,具体如下图4.2.1。图4.2.1 大学毕业论文评审系统类图4.3 类图说明根据大学生毕业论文评审系统类图的分析,在该系统中涉及到的主要类及类的作用如表4.3.1所示。表4.3.1 大学生毕业论文评审系统中的类说明类名编号属性操作毕业生1学生账号、学生姓名、学生编号、用户密码、班级、联系方式登录、更改信息、论文选题、成绩查询、提交论文、交流互动毕业生导
17、师2导师账号、账号密码、导师编号、导师姓名、导师联系方式登录、更改信息、论文开题、评阅论文、论文评分、交流互动管理员3管理员用户、管理员密码、管理员姓名、管理员编号、联系方式登录、管理公告信息、管理用户信息、录入答辩成绩论文库4论文编号、论文名称无公告栏5公告编号、公告信息、公告日期信息公布论文成绩6论文编号、论文成绩、答辩成绩、论文评语、评语导师编号无交流平台7学生编号、导师编号、交流信息编码、信息内容通信5.交互建模5.1 交互建模简介交互图描述对象间的交互关系。其中顺序图是将交互关系表示为一个二维图,它显示对象之间的动态合作关系,强调对象之间消息发送的顺序,同时显示对象之间的交互;合作图
18、描述对象间的协作关系,合作图跟顺序图相似,显示对象间的动态合作关系。除显示信息交换外,合作图还显示对象以及它们之间的关系。如果强调时间和顺序,则使用顺序图;如果强调上下级关系,则选择协作图。这两种图合称为交互图。5.2 建立顺序图顺序图纵向是时间轴,时间沿竖线向下延伸。当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时,生命线是一个双道线。UML顺序图一般用于:确认和丰富一个使用情境的逻辑。一个使用情境就是系统潜在的使用方式的描述,也就是它的名称所要描述的。一个使用情境的逻辑可能是一个用例的一部分,或是一条备选线路。大学生毕业论文评审系统主要有:开题顺序图选题顺序图提交论文顺序图录入
19、成绩顺序图成绩查询顺序图沟通交流顺序图 (1) 开题顺序图通过分析,开题顺序图中有四个对象,分别为导师用户、管理用户UI、论题控制器、数据库。基本操作顺序如下:选择开题显示开题界面提交选题保存选题保存成功操作成功开题成功公布论题公布成功图5.2.1 用户顺序图(2) 选题顺序图通过分析,选题顺序图中有四个对象,分别为毕业生、界面UI、选题控制器、数据库。基本操作顺序如下:论文选题显示选题界面确认选题是否可选保存选题保存成功选题成功返回成功图5.2.2 选题顺序图(3) 提交论文顺序图通过分析,提交论文顺序图中有五个对象,分别为导师、毕业生、论文管理器、界面UI、数据库。基本操作顺序如下:进入提
20、交界面显示论文提交界面提交论文论文检查上传论文上传成功显示上传成功通知学生评阅论文写评语保存评语保存成功通知学生有评语图5.2.3 提交论文顺序图(4) 录入成绩顺序图通过分析,录入成绩顺序图中有四个对象,分别为导师、管理员、界面UI、成绩控制器、数据库。基本操作顺序如下:论文评分确认分数论文分数保存保存成功通知导师答辩成绩录入确认成绩录入保存答辩成绩保存成功通知管理员图5.2.4 录入成绩顺序图(5) 成绩查询顺序图通过分析,成绩查询顺序图中有五个对象,分别为毕业生、界面UI、成绩控制器、数据库。基本操作顺序如下:录入学号成绩查询数据库查询返回论文和答辩成绩计算总成绩显示成绩通知用户图5.2
21、.5 成绩查询顺序图(6) 沟通交流顺序图通过分析,沟通交流顺序图中有四个对象,分别为导师、毕业生、留言平台。基本操作顺序如下:学生留言反馈留言回复留言反馈留言图5.2.6 沟通交流顺序图5.3 建立协作图(1) 毕业生选题协作图毕业生选题协作图显示了毕业生、管理界面UI、数据库、管理用户控制器四个对象之间的交互,编号为交互步骤。图5.3.1 毕业生选题协作图(2) 导师开题协作图导师开题协作图显示了导师、管理界面UI、论文控制器、数据库四个对象之间的交互,编号为交互步骤。图5.3.2 导师开题协作图6.行为建模6.1 行为建模简介行为模型常用状态转换图(简称状态图)来描述,它又称为状态机模型
22、。行为模型通过描述系统的状态以及引起系统状态转换的事件来表示系统的行为。状态图中的基本元素有事件、状态和行为等。其描述类的对象所有可能的状态以及事件发生时状态的转移条件。通常,状态图是对类图的补充。6.2 建立状态图(1) 管理员状态图管理员状态图主要包括以下状态:登录时账号密码核对,不正确则返回重新输入核对成功后进入用户管理界面在用户管理界面添加用户信息在用户管理界面删除用户信息在用户管理界面修改用户信息在公告栏管理界面进行公告栏管理在答辩成绩录入界面录入答辩成绩图6.2.1 管理员状态图(2) 用户状态图用户状态图主要包括以下状态:毕业生用户登录时账号密码核对,不正确则返回重新输入核对成功
23、后进入系统主界面,可以选择进入个人信息界面、公告栏及论文管理界面在个人信息界面可以修改个人信息在公告栏可以查看公告栏信息在论文管理界面可以进入选题界面、论文成绩查询界面和上传下载论文界面在选题界面可以进行选题在上传下载论文界面可以提交或者下载论文在论文成绩查询界面可以查询个人论文总成绩图6.2.2 用户状态图(3) 导师状态图导师状态图主要包括以下状态:导师用户登录时账号密码核对,不正确则返回重新输入核对成功后进入系统主界面在系统主界面可以选择进入个人信息界面、公告栏、论文管理界面在个人信息界面修改个人信息在公告栏查看公告在开题界面开题在论文评阅中评阅论文并写评语在论文评分中给论文打分数图6.
24、2.3 导师状态图6.3 建立活动图在论文评分活动图中,创建了三个个泳道,分别为毕业生对象、导师对象和论文评审系统对象。具体活动过程描述如下:毕业生选题系统判断选题失败,返回重新选择系统判断选题成功,毕业生提交论文所提交的论文次数不能超过三次提交论文次数超过三次,最后一次视为终稿提交论文成功后,导师批阅论文导师要对论文终稿评分评分完成即为结束6.3.1 论文评分活动图7.学习总结7.1.建模 7.1.1 为什么要建模 要生产合格的软件就要有一套关于体系结构、过程和工具的规范。 建模的目标: 模型帮助我们按照实际情况或按照我们所需要的样式对系统进行可视化。 模型允许我们详细说明系统的结构和行为。
25、 模型给出一个知道我们构造系统的模板。 模型对我们的决策进行文档化。 * 建模就是把复杂的系统变成小的系统,采用“各个击破”的原则逐一解决。 7.1.2 建模原理 1)选择创建什么模型很重要,模型要反映你难于处理的开发问题。 2)模型要在不同的精度级别上来表示。你可以根据观察的角色和观察的原因来选择精度。 3)建造模型要和现实相连。 4)重要的系统需要用一组独立的模型去处理。在面向对象的软件体系中, 7.1.3 面向对象的建模 面向算法的建模在需求发生变化或者系统增长后就变得难以维护。 面向对象的建模把对象和类作为其主要构造块。例如,在三层结构中,我们可以在用户接口层、中间层和数据库层中找到你
26、想要的对象。 7.2 UML介绍 7.2.1 概述 1)UML可以对软件密集型系统的制品进行可视化、详述、构造和文档化。最好把它用于以用况(用例)为驱动、以体系结构为中心、跌代及增量的过程中。 2)UML是一种语言,它是一种可视化的语言,它是一组图形符号。它可用于详细描述。它又是一种构造语言,可以直接生成代码。用Rational XDE就可以实现从UML到C#,或者从C#到UML的双向工程。 7.2.2 UML的概念模型 学习建模的三个要素:UML的基本构造块、这些构造块放在一起的规则、一些运用于整个UML的公共机制。 UML中有以下四种事物 : 1)结构事物 类、接口、协作(它是一个交互,它
27、是由一组共同工作以提供某协作行为的角色和其它元素构成的一个群体。)、用例、主动类(至少拥有一个进程或者线程,其元素的行为可以和其它元素的行为并发)、构件(如COM+和Java Bean)、节点。 2)行为事物 交互、状态机(描述了一个对象或者一个交互在生命期内响应事件所经历的状态序列)。 3)分组事物 包 4)注释事物 注解 UML中的四种关系 : 1)依赖 两个事物间的语义关系 2)关联 是一种结构关系,如聚合 3)泛化 一般/特殊关系 4)实现 用在两种地方:接口和实现他们之间的类和构件之间;用例和实现他们的协作之间。 UML中的图 : 1)类图 系统的静态状态图,包含主动类的类图给除系统
28、的静态进程视图。 2)对象图 3)用例图 4)顺序图 5)协作图 6)状态图 7)活动图 强调对象间的控制流程 8)构件图 9)实施图 7.2.3 体系结构 我们用5个互联的视图来描述软件密集型系统的体系结构: 1)系统的用例图 2)系统的设计视图 静态方面由类图和对象图描述,动态方面由交互图、状态图和活动图描述。 3)系统的进程视图 包含了形成系统并发和同步机制的线程和进程。 4)系统的实现视图 主要针对系统发布的配置管理。 5)系统的实施视图 7.2.4 软件开发生命周期 用况驱动以体系结构为中心 跌代过程 涉及到一连串可执行发布的管理。 软件开发生命周期的(RUP)四个阶段:初始、细化、
29、构造、移交。 7.3 公共机制 四个公共机制可以使UML简化:详述、修饰、公共划分和扩展 构造型、标记值和约束使UML提供的用以增加新的构造块、创建新的特性以及描述新的语义的机制。 7.4 图 有5种最重要的互补视图:用例视图、设计视图、进程视图、实现视图和实施视图,每一种视图包含结构建模(静态)和行为建模(动态) 建图的两种方法:正向工程和逆向工程 如何选择视图来建模? 1)视图能够表达系统的体系结构,能够暴露项目的技术风险。 2)决定用哪些制品来捕获视图的基本细节。 3)作为你的过程策略的一部分,决定把那种视图至于某种形式或者半形式的控制之下。 4)保留废弃的视图。 两种系统建模的方法:
30、1)针对同一模型,用不同层次上的细节描述图。 2)在不同的抽象层次上,从一个模型跟踪到另一个模型的方法建模。 7.5 类图 类图包括如下内容:类、接口、协作、依赖、泛化和关联关系。 对系统的静态设计视图建模时使用类图的3种方式: 1)对系统的词汇建模 2)对简单协作建模 协作提供的一些合作行为强于其所有元素行为之和。 3)对逻辑数据库模式建模 在UML中更一般的构造块是类元,类元包括:类、接口、数据类型、信号、构件、节点、用况和子系统。他是描述结构特性和行为特性的机制。7.6学习心得刚开始接触这门课是,对这门课不是很了解,甚至不知道什么叫UML,也不知道为什么要学习这么多的模型。现在这本书上的
31、模型终于是学完了,不能说自己学的有多么好,也不敢说自己能工对Ration Rose、StarUML、Visio这些建模工具有多么的熟悉,但是当做完这份结业报告的时候,我的心里有千万说不出来的成就感和喜悦感。所有的模型只有自己亲自使用了那些生疏的、困难的工具一个个绘制出来后,才知道学习的过程中尽管困难重重,但是只有切实的认真的去做,才会有意想不到的收获。这次的结业报告我自己非常满意,毕竟是自己一点一滴做出来的,辛劳的成果让我格外的开心。通过这门课,我感觉学到了很多的东西。在课后查找资料、和同学一起讨论、一起发现问题、发现解决办法让我学会了使用身边的一切力量来学习,也学会了用新的思考问题的方式,更
32、重要的是还学到了做事要认真仔细,实践才能出真知的道理。8.参考文献1衣杨等. 基于UML可视化设计实验教程M. 广东:中山大学出版社,20062张龙祥. UML与系统分析设计M. 北京:人民邮电大学出版社,20073吴建,汪杰UML基础与ROSE建模案例M北京人民邮电大学出版社,20074卢苇,杨少波J2EE项目实训UML及设计模式M. 北京清华大学出版社,20085杨宏平等. UML基础、建模与设计实战M. 北京:清华大学出版社,2012附录资料:不需要的可以自行删除 busybox详解制作根文件系统详解制作根文件系统 一、FHS(Filesystem Hierarchy Standard)
33、标准介绍当我们在linux下输入ls / 的时候,见到的目录结构以及这些目录下的内容都大同小异,这是因为所有的linux发行版在对根文件系统布局上都遵循FHS标准的建议规定。该标准规定了根目录下各个子目录的名称及其存放的内容:目录名存放的内容/bin必备的用户命令,例如ls、cp等/sbin必备的系统管理员命令,例如ifconfig、reboot等/dev设备文件,例如mtdblock0、tty1等/etc系统配置文件,包括启动文件,例如inittab等/lib必要的链接库,例如C链接库、内核模块/home普通用户主目录/rootroot用户主目录/usr/bin非必备的用户程序,例如find
34、、du等/usr/sbin非必备的管理员程序,例如chroot、inetd等/usr/lib库文件/var守护程序和工具程序所存放的可变,例如日志文件/proc用来提供内核与进程信息的虚拟文件系统,由内核自动生成目录下的内容/sys用来提供内核与设备信息的虚拟文件系统,由内核自动生成目录下的内容/mnt文件系统挂接点,用于临时安装文件系统/tmp临时性的文件,重启后将自动清除制作根文件系统就是要建立以上的目录,并在其中建立完整目录内容。其过程大体包括:编译安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录 利用交叉编译工具链,构建/lib目录 手工构建/et
35、c目录 手工构建最简化的/dev目录 创建其它空目录 配置系统自动生成/proc目录 利用udev构建完整的/dev目录 制作根文件系统的jffs2映像文件 下面就来详细介绍这个过程。二、编译安装busybox,生成/bin、/sbin、/usr/bin、/usr/sbin目录这些目录下存储的主要是常用命令的二进制文件。如果要自己编写这几百个常用命令的源程序,my god, 这简直是一个噩梦!好在我们有嵌入式Linux系统的瑞士军刀busybox,事情就简单很多。1、从 HYPERLINK / / 下载busybox-1.7.0.tar.bz22、tar xjvf busybox-1.7.0.
36、tar.bz2解包3、修改Makefile文件175 ARCH ?= arm176 CROSS_COMPILE ?= arm-linux- 4、make menuconfig配置busyboxbusybox配置主要分两部分。第一部分是Busybox Settings,主要编译和安装busybox的一些选项。这里主要需要配置:1)、Build Options - Build BusyBox as a static binary (no shared libs),表示编译busybox时,是否静态链接C库。我们选择动态链接C库。2)、Installation Options - Applets l
37、inks (as soft-links) - (X) as soft-links,表示安装busybox时,将各个命令安装为指向busybox的软链接还是硬链接。我们选择软链接。3)、Installation Options - (/work/nfs_root/fs_mini3) BusyBox installation prefix,表示busybox的安装位置。我们选择/work/nfs_root/fs_mini34)Busybox Library Tuning。保留Command line editing以支持命令行编辑;保留History size以支持记忆历史命令;选中Tab com
38、pletion和Username completion以支持命令自动补全 第二部分是Applets,他将busybox的支持的几百个命令分门别类。我们只要在各个门类下选择想要的命令即可。这里我们基本保持默认设置。1)选中Networking Utilities - httpd下的Enable -u option,以启用http服务器的功能allows the server to run as a specific user5、编译busyboxmake6、安装busyboxmake install安装完成后,可以看到在/work/nfs_root/fs_mini3目录下生成了binsbinus
39、r/binusr/sbin目录,其下包含了我们常用的命令,这些命令都是指向bin/busybox的软链接,而busybox本身的大小不到800K:dennisdennis-desktop:/work/nfs_root/fs_mini3$ lsbin linuxrc sbin usrdennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l bintotal 740lrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 addgroup - busyboxlrwxrwxrwx 1 dennis dennis 7 20
40、10-04-03 23:57 adduser - busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 ash - busybox-rwxr-xr-x 1 dennis dennis 749632 2010-04-03 23:57 busyboxlrwxrwxrwx 1 dennis dennis 7 2010-04-03 23:57 cat busybox 而普通PC机上的ls命令就有差不多80K的大小: dennisdennis-desktop:/work/nfs_root/fs_mini3$ ls -l /bin/ls-rwxr-xr-
41、x 1 root root 78004 2007-09-29 20:51 /bin/ls busybox以它娇小的身躯容纳了数以百计的命令代码,实在是让人佩服不已,其不愧嵌入式系统瑞士军刀之美誉。据说,busybox的作者身患绝症,这更让人钦佩GNU开源软件的作者们。 三、利用交叉编译工具链,构建/lib目录 光有应用程序(命令)是不够的,因为应用程序本身需要使用C库的库函数,因此还必需制作for ARM的C库,并将其放置于/lib目录。my god,要自己写C库的源代码吗?不用!还记得交叉编译工具链的3个组成部分吗?交叉编译器、for ARM的C库和二进制工具。哈哈,for ARM的C库是现
42、成的,我们只需要拷贝过来就可以了。遗憾的是:整个C库目录下的文件总大小有26M。而我们根文件系统所在分区不过区区16M而已,根本放不下。怎么办呢? dennisdennis-desktop:/work/nfs_root/fs_mini3$ du -s -si /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib26M /work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib 需要C库目录下所有的文件吗?no,absolutely no! 让我们来分析一下glibc库目录下内容的组成。该目录下的子目录和文件共分8类:
43、 目标文件,如crtn.o,用于gcc链接可执行文件 libtool库文件(.la),在链接库文件时这些文件会被用到,比如他们列出了当前库文件所依赖的其它库文件,程序运行时无需这些文件 gconv目录,里面是各种链接脚本,在编译应用程序时,他们用于指定程序的运行地址,各段的位置等 静态库文件(.a),例如libm.a,libc.a 动态库文件 (.so、.so.0-9*) 动态链接库加载器ld-2.3.6.so、ld-linux.so.2 其它目录及文件很显然,第1、2、3、4、7类文件和目录是不需要拷贝的。由于动态链接的应用程序本身并不含有它所调用的C库函数的代码,因此执行时需要动态链接库加
44、载器来为它加载相应的C库文件,所以第6类文件是需要拷贝的。除此之外,第5类文件当然要拷贝。但第5类文件的大小也相当大。dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ du -c -si *.so* 7.2M total 需要全部拷贝吗?非也,非也!其实,需要哪些库完全取决于要运行的应用程序使用了哪些库函数。如果我们只制作最简单的系统,那么我们只需要运行busybox这一个应用程序即可。通过执行 dennisdennis-desktop:/work/nfs_root/fs_mini3$ arm-linux
45、-readelf -a bin/busybox | grep Shared0 x00000001 (NEEDED) Shared library: libcrypt.so.10 x00000001 (NEEDED) Shared library: libm.so.60 x00000001 (NEEDED) Shared library: libc.so.6 可知:busybox只用到了3个库:通用C库(libc)、数学库(libm)、加密库(libcrypt),因此我们只需要拷贝这3个库的库文件即可。但是每个库都有4个文件,4个文件都要拷贝吗?当然不是。 dennisdennis-deskto
46、p:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libcrypt.-*-rwxr-xr-x 1 dennis dennis 30700 2008-01-22 05:32 libcrypt-2.3.6.so-rw-r-r- 1 dennis dennis 23118 2008-01-22 05:32 libcrypt.alrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libcrypt.so - libcrypt.so.1lrwxrwxrwx 1 dennis dennis 17 200
47、8-12-22 15:38 libcrypt.so.1 - libcrypt-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libm.-*-rwxr-xr-x 1 dennis dennis 779096 2008-01-22 05:31 libm-2.3.6.so-rw-r-r- 1 dennis dennis 1134282 2008-01-22 05:32 libm.alrwxrwxrwx 1 dennis dennis 9 2008-12-22 15:38 libm
48、.so - libm.so.6lrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libm.so.6 - libm-2.3.6.sodennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ ls -l libc.-*-rwxr-xr-x 1 dennis dennis 1435660 2008-01-22 05:48 libc-2.3.6.so-rw-r-r- 1 dennis dennis 2768280 2008-01-22 05:31 libc.a-rw-r-r-
49、1 dennis dennis 195 2008-01-22 05:34 libc.solrwxrwxrwx 1 dennis dennis 13 2008-12-22 15:38 libc.so.6 - libc-2.3.6.so 4个文件中的.a文件是静态库文件,是不需要拷贝的。另外3个文件是: 实际的共享链接库:libLIBRARY_NAME-GLIBC_VERSION.so。当然需要拷贝。 主修订版本的符号链接,指向实际的共享链接库:libLIBRARY_NAME.so.MAJOR_REVISION_VERSION,程序一旦链接了特定的链接库,将会参用该符号链接。程序启动时,加载器在加
50、载程序前,会检索该文件。所以需要拷贝。 与版本无关的符号链接,指向主修订版本的符号连接(libc.so是唯一的例外,他是一个链接命令行:libLIBRARY_NAME.so,是为编译程序时提供一个通用条目)。这些文件在程序被编译时会被用到,但在程序运行时不会被用到,所以不必拷贝它。关于共享库的2个符号链接的作用的特别说明:当我们使用gcc hello.c -o hello -lm编译程序时,gcc会根据-lm的指示,加头(lib)添尾(.so)得到libm.so,从而沿着与版本无关的符号链接(libm.so - libm.so.6)找到libm.so.6并记录在案(hello的ELF头中),表
51、示hello需要使用libm.so.6这个库文件所代表的数学库中的库函数。而当hello被执行的时候,动态链接库加载器会从hello的ELF头中找到libm.so.6这个记录,然后沿着主修订版本的符号链接(libm.so.6 - libm-2.3.6.so)找到实际的共享链接库libm-2.3.6.so,从而将其与hello作动态链接。可见,与版本无关的符号链接是供编译器使用的,主修订版本的符号链接是供动态链接库加载器使用的,而实际的共享链接库则是供应用程序使用的。通过以上分析,我们只需要拷贝3个库(每个库各1个主修订版本的符号链接和1个实际的共享链接库)以及动态链接库加载器(1个符号链接和1
52、个实体文件)。步骤如下:dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ mkdir /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libcrypt-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp
53、-l libcrypt.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libm-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libm.so.* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc
54、-3.4.5-glibc-2.3.6/arm-linux/lib$ cp libc-* /work/nfs_root/fs_mini3/libdennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l libc.so.* /work/nfs_root/fs_mini3/lib dennisdennis-desktop:/work/tools/gcc-3.4.5-glibc-2.3.6/arm-linux/lib$ cp -l ld-* /work/nfs_root/fs_mini3/lib 四、手工构建
55、/etc目录 /etc目录存放的是系统程序的主配置文件,因此需要哪些配置文件取决于要运行哪些系统程序。即使最小的系统也一定会运行1号用户进程init,所以我们至少要手工编写init的主配置文件inittab。busybox的inittab文件的语法、语义与传统的SYSV的inittab有所不同。 inittab文件中每个条目用来定义一个需要init启动的子进程,并确定它的启动方式,格式为:。例如:ttySAC0:askfirst:-/bin/sh 表示子进程要使用的控制台,若省略则使用与init进程一样的控制台 表示运行级别,busybox init程序这个字段没有意义 表示init进程如何控
56、制这个子进程 sysinit:系统启动后最先执行,只执行一次,init进程等待它结束后才继续执行其它动作 wait:系统执行完sysinit条目后执行,只执行一次,init进程等待它结束后才继续执行其它动作 once:系统执行完wait条目后执行,只执行一次,init进程不等待它结束 respawn:启动完once进程后,init进程监测发现子进程退出时,重新启动它 askfirst:启动完respawn进程后,与respawn类似,不过init进程先输出” Please press Enter to activate this console“,等用户输入回车后才启动子进程 shutdown
57、:当系统关机时 restart:Busybox中配置了CONFIG_FEATURE_USE_INITAB,并且init进程接收到SIGUP信号时执行,先重新读取、解析/etc/inittab文件,再执行restart程序 ctrlaltdel:按下ctrl+alt+del键时执行,不过在串口控制台中无法输入它 表示进程对应的二进制文件。如果前面有-号,表示该程序是“可以与用户进行交互的”我们制作最简单的/etc/inittab文件,其内容如下::sysinit:/etc/init.d/rcS:askfirst:-/bin/sh:ctrlaltdel:/sbin/reboot:shutdown:
58、/bin/umount -a r 制作最简单的脚本程序文件/etc/init.d/rcS,其内容如下: #!/bin/shifconfig eth0 7修改shell脚本文件/etc/init.d/rcS的权限,以使其可被执行:# chmod a+x /etc/init.d/rcS五、手工构建最简化的/dev目录 在linux机器上,执行ls /dev可看到几百个设备文件,我需要手工创建它们吗?maybe,我只需要手工创建几个设备文件!我怎么知道我应该创建哪几个设备文件呢?管它呢,先看看开发板上可爱的linux的反应再说。 启动Linux操作系统,显示: VFS: Mounted root (
59、nfs filesystem).Freeing init memory: 112KWarning: unable to open an initial console. 这说明,内核已经成功挂载根文件系统,但却未能成功启动第1个用户进程init。通过错误消息“unable to open an initial console”搜索内核源代码,找到init/main.c文件。748 static int noinline init_post(void)749 750 free_initmem();751 unlock_kernel();752 mark_rodata_ro();753 syste
60、m_state = SYSTEM_RUNNING;754 numa_default_policy();755 756 if (sys_open(const char _user *) /dev/console, O_RDWR, 0) 0)757 printk(KERN_WARNING Warning: unable to open an initial console.n);758 759 (void) sys_dup(0);760 (void) sys_dup(0);761 762 if (ramdisk_execute_command) 763 run_init_process(ramdi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 合肥幼儿师范高等专科学校《高级财务管理学》2025-2026学年期末试卷
- 硅烷法多晶硅制取工冲突管理知识考核试卷含答案
- 泉州海洋职业学院《儿童发展心理学》2025-2026学年期末试卷
- 综合布线装维员成果强化考核试卷含答案
- 设备租赁公司工作总结报告
- 粮食经纪人安全风险测试考核试卷含答案
- 井下配液工岗前工作技巧考核试卷含答案
- 船舶涂装工安全行为评优考核试卷含答案
- 继电器制造工岗前品质考核试卷含答案
- 打造无难度管道安装-深度解析管道设备安装全过程
- 决胜未来:中美六大未来产业演进图景
- 2026湖南省博物馆编外工作人员公开招聘笔试备考试题及答案解析
- ivd行业市场分析2026报告
- 创建鲁班奖工程实施指南
- 2026四川成都双流区面向社会招聘政府雇员14人备考题库带答案详解
- 2026万基控股集团有限公司招聘50人笔试模拟试题及答案解析
- 2025版建筑工程建筑面积计算规范
- 2026江苏省人民医院行风监督处管理辅助岗招聘1人考试备考题库及答案解析
- 2026一季度重庆市属事业单位公开招聘242人参考考试试题及答案解析
- 2026年社会学概论试题库200道附答案【能力提升】
- 志愿服务与社区建设:共建共治共享的基层治理新实践
评论
0/150
提交评论