- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
xlanchen@2006.5.24 Embedded Operating Systems 嵌入式操作系统 陈香兰xlanchen@ /~xlanchen Spring 2006 中国科学技术大学计算机系 上周三 嵌入式系统基本概念 嵌入式硬件的发展 嵌入式软件及其开发 嵌入式操作系统及系统开发 典型嵌入式操作系统介绍 嵌入式操作系统选型 上周四 GNU Tools简介 GCC Binutils Gdb make 本课的主要内容: 第一部分:开发工具介绍(续) 第二部分:SkyEye介绍 开发工具介绍(续) xlanchen@2006.5.24 主要内容 GNU Tools介绍(续) ld 交叉编译环境的安装 GNU Tools—ld ld,The GNU LinkerLinux上常用的链接器 ld软件的作用是把各种目标文件(.o文件)和库文件链接在一起,并定位数据和函数地址,最终生成可执行程序 gcc可以间接的调用ld,使用gcc的-Wl参数可以传递参数给ld 使用命令:ld --help可以列出ld常用的一些选项 ld使用举例(1) 源程序 编译hello.c到hello.o 命令:gcc -c hello.c ld使用举例(2) 链接(演示) 命令:ld –dynamic-linker /lib/ld-linux.so.2 /usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o hello.o –lc –o hello 运行 ./hello 目标文件 ld通过BFD库可以读取和操作coff、elf、a.out等各种执行文件格式的目标文件 BFD(Binary File Descriptor) 目标文件(object file) 由多个节(section)组成,常见的节有: text节保存了可执行代码, data节保存了有初值的全局标量, bss节保存了无初值的全局变量。 使用objdump查看目标文件的信息(演示) objdump –h hello.o 比较hello 链接描述文件( Linker script ) 可以使用链接描述文件控制ld的链接过程。 链接描述文件,command file又称为链接脚本,Linker script 用来控制ld的链接过程 描述各输入文件的各节如何映射到输出文件的各节 控制输出文件中各个节或者符号的内存布局 使用的语言为: The ld command language,链接命令语言 ld命令的-T commandfile选项指定了链接描述文件名 如果不指定链接描述文件,ld就会使用一个默认的描述文件来产生执行文件 找到实际项目中的链接描述文件(演示) 链接描述文件的命令 链接描述文件的命令主要包括如下几类: 设置入口点命令 处理文件的命令 处理文件格式的命令 其他 常用的命令 设置入口点 格式:ENTRY(symbol)设置symbol的值为执行程序的入口点。 ld有多种方法设置执行程序的入口点,确定程序入口点的顺序如下: ld命令的-e选项指定的值 Entry(symbol)指定的值 .text节的起始地址 入口点为0 常用的命令 INCULDE filename包含其他filename的链接描述文件 INPUT(file,file,…)指定多个输入文件名 常用的命令 OUTPUT_FORMAT(bfdname)指定输出文件的格式 OUTPUT_ARCH ( bfdname ) 指定目标机器体系结构,例如:OUTPUT_ARCH(arm) 常用的命令 MEMORY:这个命令在用于嵌入式系统的链接描述文件中经常出现,它描述了各个内存块的起始地址和大小。格式如下: MEMORY { name [(attr)]:ORIGIN = origin,LENGTH = len … } 例如: Memory举例 SECTIONS命令 SECTIONS告诉ld如何把输入文件的各个节映射到输出文件的各个节中。 在一个链接描述文件中只能有一个SECTIONS命令 在SECTIONS命令中可以使用的命令有三种: 定义入口点 赋值 定义输出节 定义输出节 SECTIONS{ ... secname : { contents } ... } 例如: 定位计数器 定位计数器,The Location Counter 一个特殊的ld变量,使用“.”表示 总是在SECTIONS中使用 例如: 一个简单例子 下面是一个简单的例子:例中,输出文件包含text,data,bss三个节,而输入文件也只包含这3个节: SECTIONS { .=0 .text:{*(.text)}; .=0x
文档评论(0)