嵌入式Linux编程入门与开发实例-第3章资料课件.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《嵌入式Linux编程入门与开发实例-第3章资料课件.ppt》由会员分享,可在线阅读,更多相关《嵌入式Linux编程入门与开发实例-第3章资料课件.ppt(77页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第3 3章章 构建嵌入式构建嵌入式LinuxLinux开发环境开发环境 【学习目标】l熟悉嵌入式系统开发环境的构建l熟悉U-Boot的移植l掌握嵌入式Linux操作系统内核编译撕胀场闸喝端疙脾污拍织建渡娄掂置襄蒂富栈卷雏爪泄狰凭务视振嫁朋邑嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章第第3 3章章 构建嵌入式构建嵌入式LinuxLinux开发环境开发环境 嵌入式系统开发环境的构建嵌入式系统开发环境的构建3.1U-bootU-boot的移植的移植3.2嵌入式Linux操作系统内核编译3.3习题与练习习题与练习3.4马晌它邢烁隘裁畅瘸吹摧腮迟柿旨臀招牟揽屈
2、揣尚严轮隙甭屋蚂搞扩继排嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章3.1 3.1 嵌入式系统开发环境的构建嵌入式系统开发环境的构建 所所谓谓交交叉叉编编译译,就就是是利利用用运运行行在在某某台台计计算算机机(宿宿主主机机)上上的的编编译译器器编编译译某某个个源源程程序序,生生成成在在另另一一台台机机器器(目目标标机机)上上运运行行的的目目标标代代码码的的过过程程。使使用用交交叉叉编编译译的的原原因因主主要要有有两两个个,一一是是目目标标平平台台所所需需要要的的Bootloader以以及及操操作作系系统统核核心心没没有有建建立立起起来来时时,需需要要做做
3、交交叉叉编编译译;二二是是一一般般目目标标板板的的资资源源都都比比较较有有限限,不不具具备备一一定定的的处处理理器器能能力力和和存存储储空空间间,需需要要有有强强大大的的宿宿主主PC机机为它完成大部分的调试编译任务。为它完成大部分的调试编译任务。囊刚阴思犬偿矮匙旦棋耗探便走韵蔬鸥捉击腆佩哇迫烯阮值屿诞婿漠札揩嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章binutils:是是一一组组二二进进制制处处理理工工具具的的集集合合,包包括括连连接接器器,汇汇编编器器和和其其他他用用于于目目标标文文件件和和档档案案的的工具工具。二进制工具二进制工具蒙蔫甸淮库芬色哇贼
4、畅攀五叼呐恐种拒但婴逐喷殉蓉拟鄂梗蛹钎孰苫滚许嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章binutils的主要工具介绍如下:的主要工具介绍如下:addr2line:把程序地址转换为文件名和行号。在命令:把程序地址转换为文件名和行号。在命令行中给它一个地址和一个可执行文件名,它就会使用行中给它一个地址和一个可执行文件名,它就会使用这个可执行文件的调试信息指出在给出的地址上是哪这个可执行文件的调试信息指出在给出的地址上是哪个文件以及行号。个文件以及行号。ar:建立、修改、提取档案文件。档案文件是包含多:建立、修改、提取档案文件。档案文件是包含多个文件内容的
5、一个大文件,其结构保证了可以恢复原个文件内容的一个大文件,其结构保证了可以恢复原始文件内容。始文件内容。as:主要用来编译:主要用来编译GNU C编译器编译器gcc输出的汇编文件,输出的汇编文件,产生的目标文件由连接器产生的目标文件由连接器ld连接。连接。攫而帜陀稚殿癌钝替床瘦谐偶褪兑琴匈诡钦羡哀跃杨闹松杂堕忆丙苦苫旧嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章 c+filt:连连接接器器使使用用它它来来过过滤滤 C+和和 Java 符符号,防止重载函数冲突。号,防止重载函数冲突。gprof:显示程序调用段的各种数据。显示程序调用段的各种数据。ld:是是
6、连连接接器器,它它把把一一些些目目标标和和归归档档文文件件结结合合在在一一起起,重重定定位位数数据据,并并链链接接符符号号引引用用。通通常常,建立一个新编译程序的最后一步就是调用建立一个新编译程序的最后一步就是调用ld。nm:列出目标文件中的符号。:列出目标文件中的符号。objcopy:把把一一种种目目标标文文件件中中的的内内容容复复制制到到另另一一种类型的目标文件中种类型的目标文件中.岩叭伊碑窒坟拖句媳捂圈沥脱宪丢奏宋媒熄汤黎轻腔仔沁铀跑嘘除肆破竹嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章 objdump:显显示示一一个个或或者者更更多多目目标标文文
7、件件的的信信息息。使用选项来进行控制。使用选项来进行控制。ranlib:产产生生归归档档文文件件索索引引,并并将将其其保保存存到到这这个个归归档档文文件件中中。在在索索引引中中列列出出了了归归档档文文件件各各成成员所定义的可重分配目标文件。员所定义的可重分配目标文件。readelf:显示:显示ebf格式可执行文件的信息。格式可执行文件的信息。size:列列出出目目标标文文件件每每一一段段的的大大小小以以及及总总体体的的大大小小。默默认认情情况况下下,对对于于每每个个目目标标文文件件或或者者一一个归档文件中的每个模块只产生一行输出。个归档文件中的每个模块只产生一行输出。猛臃唉遭律今苗滤墓毙赣乏抒
8、胳棵息襄帆跨庞统砖见剂欧屑就甥活墙耀吉嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章 size:列出目标文件每一段的大小以及总体的列出目标文件每一段的大小以及总体的大小。默认情况下,对于每个目标文件或者一大小。默认情况下,对于每个目标文件或者一个归档文件中的每个模块只产生一行输出。个归档文件中的每个模块只产生一行输出。strings:打印某个文件的可打印字符串,这些:打印某个文件的可打印字符串,这些字符串最少字符串最少4个字符长,也可以使用选项个字符长,也可以使用选项-n设设置字符串的最小长度。默认情况下,它只打印置字符串的最小长度。默认情况下,它只打印目
9、标文件初始化和可加载段中的可打印字符;目标文件初始化和可加载段中的可打印字符;对于其它类型的文件它打印整个文件的可打印对于其它类型的文件它打印整个文件的可打印字符,这个程序对于了解非文本文件的内容很字符,这个程序对于了解非文本文件的内容很有帮助。有帮助。示茬屏查托微譬毋莉函盼士扯阎兜塑郁窿釉铣伐起誊啦丑轧询票舒柿奈切嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章 strip:丢弃目标文件中的全部或者特定符号。:丢弃目标文件中的全部或者特定符号。libiberty:包含许多:包含许多GNU程序都会用到的函数,程序都会用到的函数,这些程序有:这些程序有:get
10、opt,obstack,strerror,strtol 和和 strtoul等。等。libbfd:二进制文件描述库。:二进制文件描述库。libopcodes:用来处理用来处理opcodes的库的库,在生成一在生成一些应用程序的时候也会用到它。些应用程序的时候也会用到它。windres:一个一个windows资源的编译器。资源的编译器。熏掂疏叙敞窒造人休媒监湘胶蒋由算娄柏腻啪播蚤伐厚档尿谆矾脚侥擂洲嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章GCC:工具是编译程序的最为主要的工具。工具是编译程序的最为主要的工具。GCC包括以下几个主要的工具:包括以下几个主
11、要的工具:Cpp:C预处理器。预处理器。g+:C+编译器。编译器。gcc:C编译器。编译器。gccbug:创建:创建bug报告的报告的Shell脚本。脚本。gcov:分析在程序中哪里做优化效果好。:分析在程序中哪里做优化效果好。扛瘪希诈幢购微呕拔班灶摊因公刊匀彻岿捌搏荷雾谗靠姚绝燃椭鹏昨巷塌嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章libgcc*:gcc的运行库。的运行库。libstdc+:标准:标准C+库,包含许多常用函库,包含许多常用函数。数。libsupc+:提供支持:提供支持C+语言的库函数。语言的库函数。屈秃绢港浮匹篓雍浑悸吞移啥箍域耻鸥调姆
12、狐徐芍溪银勉排疡奴蠢森酋吐嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章Glibe:是是提提供供系系统统调调用用和和基基本本函函数数的的 C 库库,比比如如open(),malloc(),printf()等等等等。所所有有动动态态连连接的程序都要用到它接的程序都要用到它。喉沸韶痕丽牢馋锄闽毫消想澎垃蜡缴挽殴万斯湘你痈嫩肖莉屏督捌钻樊腹嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章Glibc 中主要有以下程序:中主要有以下程序:l catchsegv:当程序发生:当程序发生segmentation fault的的时候时候
13、,用来建立一个堆栈跟踪。用来建立一个堆栈跟踪。l gencat:建立消息列表。:建立消息列表。l getconf:针对文件系统的指定变量显示其系:针对文件系统的指定变量显示其系统设置值。统设置值。l getent:从系统管理数据库获取一个条目。:从系统管理数据库获取一个条目。l glibcbug:建立:建立glibc的的bug报告并且发送到报告并且发送到bug报告的邮件地址。报告的邮件地址。憎懦贮桅帕坯屑扔揪驯解朽挞胁痊盔臣黍寝忠滞盐稼豁泰魏苍暗瘩鸣吨燎嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章l iconv:转化字符集。:转化字符集。l iconvc
14、onfig:建立快速读取的:建立快速读取的iconv模块所使模块所使用的设置文件。用的设置文件。l ldconfig:设置动态链接库的实时绑定。:设置动态链接库的实时绑定。l ldd:列出每个程序或者命令需要的共享库。:列出每个程序或者命令需要的共享库。l lddlibc4:辅助辅助 ldd 操作目标文件。操作目标文件。l locale:是一个是一个 Perl 程序,可以告诉编译器程序,可以告诉编译器打开或关闭内建的打开或关闭内建的locale支持。支持。l localedef:编译编译locale标准。标准。众延社咒浇蛤铱惊烃卵精乙菏弯叮酒笆赔舞伏单砧蒋倦呐拱带别尉撼岸沤嵌入式Linux编程
15、入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章l nscd:提供对常用名称设备调用的缓存的守护:提供对常用名称设备调用的缓存的守护进程。进程。l nscd_nischeck:检查在进行:检查在进行NIS+侦查时是否侦查时是否需要安全模式。需要安全模式。l pcprofiledump:打印:打印PC profiling产生的信息。产生的信息。l pt_chown:是一个辅助程序,帮助:是一个辅助程序,帮助grantpt设设置子虚拟终端的属主,用户组和读写权限。置子虚拟终端的属主,用户组和读写权限。l rpcgen:产生实现:产生实现RPC协议的协议的C代码。代码。l rpcin
16、fo:对:对RPC服务器产生一个服务器产生一个RPC呼叫。呼叫。疹亚限见邢烤丢番锄戈谐华酷仗谬嘱能行贱嘴补节佩兽串处拌溺喷矮舔骂嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章l sln:用来创建符号链接,由于它本身是静态:用来创建符号链接,由于它本身是静态连接的,在动态连接不起作用的时候,连接的,在动态连接不起作用的时候,sln仍然仍然可以建立符号链接。可以建立符号链接。l sprof:读取并显示共享目标的特征描述数据。:读取并显示共享目标的特征描述数据。l tzselect:对用户提出关于当前位置的问题:对用户提出关于当前位置的问题,并输出时区信息到标准
17、输出。并输出时区信息到标准输出。l xtrace:通过打印当前执行的函数跟踪程序:通过打印当前执行的函数跟踪程序执行情况。执行情况。l zdump:显示时区。:显示时区。磐性会鞋帜逃亦七凹铰姻渔揣子蒸党涎厂袁旧浸窜颤玉仿橙墨众迁蓝谭乏嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章l zic:时区编译器。:时区编译器。l ld.so:帮助动态链接库的执行。:帮助动态链接库的执行。l libBrokenLocale:帮助程序处理破损:帮助程序处理破损locale,如,如Mozilla。l libSegFault:处理:处理 segmentation fault
18、 信号,信号,试图捕捉试图捕捉segfaults。l libanl:异步名称查询库。:异步名称查询库。l L ibbsd-compat:为了在:为了在linux下执行一些下执行一些BSD程序程序,libbsd-compat提供了必要的可移植提供了必要的可移植性。性。寡屠俏王睁绑泄睡冬局袖酸仆蔑汰泰啸坑拐轰炔泌川锌抗藏役褂靴汐昨缝嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章llibc:是主要的:是主要的C库库-常用函数的集成。常用函数的集成。llibcrypt:加密编码库。:加密编码库。llibdl:动态连接接口。:动态连接接口。llibg:g+的运行时。
19、的运行时。llibieee:IEEE浮点运算库。浮点运算库。llibm:数学函数库。:数学函数库。拂茬赢在肄舟功峭时潦超覆像滩席豌总啦唉粮绞投受婚陆马络艇唆郑伶砚嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章llibmcheck:包括了启动时需要的代码。:包括了启动时需要的代码。llibmemusage:帮助:帮助 memusage 搜集程序运行搜集程序运行时内存占用的信息。时内存占用的信息。llibnsl:网络服务库。:网络服务库。llibnss*:是名称服务切换库,包含了解释主机是名称服务切换库,包含了解释主机名,用户名,组名,别名,服务,协议等等的名
20、,用户名,组名,别名,服务,协议等等的函数。函数。llibpcprofile:帮助内核跟踪在函数:帮助内核跟踪在函数,源码行和源码行和命令中命令中CPU使用时间。使用时间。愿戎善沦筒耻傀谋气涛琐垢樟毛慈汹去记板郸羊臣湿算娟滦傲阿蹦杉月媒嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章llibpthread:POSIX 线程库。线程库。llibresolv:创建:创建,发送及解释到互联网域名服务发送及解释到互联网域名服务器的数据包。器的数据包。llibrpcsvc:提供:提供RPC的其他服务。的其他服务。llibrt:提供了大部分的提供了大部分的POSIX.1
21、b实时扩展的实时扩展的接口。接口。llibthread_db:对建立多线程程序的调试很有对建立多线程程序的调试很有用。用。llibutil:包含了在很多不同的包含了在很多不同的 Unix程序中使用程序中使用的的“标准标准”函数。函数。鞠袄双讹修暑轩丘赎涂纸腔奔扣筹低娟园陈肮溶搪吮珐详僧劝涧渝磺陀忘嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章3.2 3.2 移植移植U-bootU-bootBootloader 就就是是在在操操作作系系统统内内核核运运行行之之前前运运行行的的一一段段小小程程序序。通通过过这这段段小小程程序序,可可以以初初始始化化硬硬件件设设
22、备备、建建立立内内存存空空间间的的映映射射图图,从从而而将将系系统统的的软软硬硬件件环环境境带带到到一一个个合合适适的的状状态态,以以便便为为最最终终调用操作系统内核准备好正确的环境。调用操作系统内核准备好正确的环境。哇贰踪万愿脐戎匆筋瓜进师博俩泪擒眨漫佬桃睹摧碗俩霜秩司渺宅蒸奋路嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章针针 对对 ARM处处 理理 器器,常常 见见 的的 Bootloader有有 U-Boot、RedBoot、ARMBoot等:等:lU-Boot:它是它是sourceforge上的一个开放源代码的项上的一个开放源代码的项目,可对目,
23、可对PowerPC、ARM、MIPS、x86等处理器提供等处理器提供支持,它支持的嵌入式操作系统有支持,它支持的嵌入式操作系统有Linux、VxWorks、NetBSD、QNX、RTEMS等,是目前支持最广泛、使用等,是目前支持最广泛、使用最多的最多的Bootloader。3.2.1 Bootloader3.2.1 Bootloader概述概述谋陇吧谓蜗炭榷球臣丫服掖榴郝操抹渝蜒贪猜翱粳拢锣瞪际巳我几前镀拱嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章lRedBoot:RedBoot是是Redhat公司随公司随eCos(Embedded Configura
24、ble Operating System)发布的)发布的一个一个Boot方案,是一个开源项目。方案,是一个开源项目。lARMBoot:是是sourceforge上的一个开放源代码的项上的一个开放源代码的项目,它最初的设计只是针对目,它最初的设计只是针对ARM处理器体系结构,所处理器体系结构,所以它可以很容易地被移植到各种以以它可以很容易地被移植到各种以ARM为核心的平台为核心的平台上。上。舟硫卡跌肝或如腿控港花课挚竿砌粉炒碉秦沪荒勾傣栽帽沃粉吁郭鸳疫揪嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章 图图3-1是一个同时装有是一个同时装有 Bootloade
25、r、内核的启动参数、内核的启动参数、内核映像和根文件系统映像的固态存储设备的典型空内核映像和根文件系统映像的固态存储设备的典型空间分配结构图。间分配结构图。图3-1固态存储设备的典型空间分配结构秽锨撒徐集谨驯茎擂酌帝了礁寝说奋蚌运次肿军氦畸抱邱傻它多估沉桨穿嵌入式Linux编程入门与开发实例-第3章嵌入式Linux编程入门与开发实例-第3章3.2.2 Bootloader3.2.2 Bootloader的启动流程的启动流程 Bootloader 的启动过程有单阶段(的启动过程有单阶段(Single Stage)和多)和多阶段(阶段(Multi-Stage)两种形式。通常多阶段的)两种形式。通常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 嵌入式 Linux 编程 入门 开发 实例 资料 课件
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内