- 1、本文档共31页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
gcc编程环境基础4ld命令和uboot中的lds文件实例和简单实例分析
gcc编程环境基础4--ld命令和u-boot中的lds文件实例和简单实例分析ld选项和lds文件==================================================================================
?
0. Contents1. 概论2. 基本概念3. 脚本格式4. 简单例子5. 简单脚本命令6. 对符号的赋值7. SECTIONS命令8. MEMORY命令9. PHDRS命令10. VERSION命令11. 脚本内的表达式12. 暗含的连接脚本
1. 概论
每一个链接过程都由链接脚本(linker script, 一般以lds作为文件的后缀名)控制. 链接脚本主要用于规定如何把输入文件内的section放入输出文件内, 并控制输出文件内各部分在程序地址空间内的布局. 但你也可以用连接命令做一些其他事情.连接器有个默认的内置连接脚本, 可用ld --verbose查看. 连接选项-r和-N可以影响默认的连接脚本(如何影响?).-T选项用以指定自己的链接脚本, 它将代替默认的连接脚本.你也可以使用暗含的连接脚本以增加自定义的链接命令.以下没有特殊说明,连接器指的是静态连接器.
2. 基本概念
链接器把一个或多个输入文件合成一个输出文件.输入文件: 目标文件或链接脚本文件. 输出文件: 目标文件或可执行文件.目标文件(包括可执行文件)具有固定的格式, 在UNIX或GNU/Linux平台下, 一般为ELF格式. 若想了解更多, 可参考 UNIX/Linux平台可执行文件格式分析?
有时把输入文件内的section称为输入section(input section), 把输出文件内的section称为输出section(output sectin).目标文件的每个section至少包含两个信息: 名字和大小. 大部分section还包含与它相关联的一块数据, 称为section contents(section内容). 一个section可被标记为“loadable(可加载的)”或“allocatable(可分配的)”. loadable section: 在输出文件运行时, 相应的section内容将被载入进程地址空间中.allocatable section: 内容为空的section可被标记为“可分配的”. 在输出文件运行时, 在进程地址空间中空出大小同section指定大小的部分. 某些情况下, 这块内存必须被置零.如果一个section不是“可加载的”或“可分配的”, 那么该section通常包含了调试信息. 可用objdump -h命令查看相关信息.每个“可加载的”或“可分配的”输出section通常包含两个地址: VMA(virtual memory address虚拟内存地址或程序地址空间地址)和LMA(load memory address加载内存地址或进程地址空间地址). 通常VMA和LMA是相同的.在目标文件中, loadable或allocatable的输出section有两种地址: VMA(virtual Memory Address)和LMA(Load Memory Address). VMA是执行输出文件时section所在的地址, 而LMA是加载输出文件时section所在的地址. 一般而言, 某section的VMA == LMA. 但在嵌入式系统中, 经常存在加载地址和执行地址不同的情况: 比如将输出文件加载到开发板的flash中(由LMA指定), 而在运行时将位于flash中的输出文件复制到SDRAM中(由VMA指定).?
可这样来理解VMA和LMA, 假设:(1) .data section对应的VMA地址是0 该section内包含了3个32位全局变量, i、j和k, 分别为1,2,3.(2) .text section内包含由printf( j=%d , j );程序片段产生的代码.连接时指定.data section的VMA为0 产生的printf指令是将地址为0的4字节内容作为一个整数打印出来.如果.data section的LMA为0显然结果是j=2如果.data section的LMA为0显然结果是j=1还可这样理解LMA:.text section内容的开始处包含如下两条指令(intel i386指令是10字节,每行对应5字节):jmp 0movl $0x1,%eax如果.text section的LMA为0x0804828
您可能关注的文档
- ch412 线性系统根轨迹201410.ppt
- ch05用例图用例图建模.ppt
- chap9存储.ppt
- ch1信号描述及分析.ppt
- ch9 聚类分析13.ppt
- chapter26字符串.ppt
- class13Java基础语法1.ppt
- CATIA曲面建模练习电话.ppt
- COM组件开发潘爱民.ppt
- Chapter1 总论跨国公司管理.ppt
- 北师大版小学数学三年级上册《寄书》教学设计.docx
- 统编版(部编版)语文二年级上册《雪孩子》教学设计.docx
- 统编版(部编版)语文二年级上册《八角楼上》教学设计.docx
- 北师大版小学数学三年级上册《长方形周长》教学设计.docx
- 北师大版小学数学三年级上册《丰收了》教学设计.docx
- 统编版(部编版)语文二年级上册《夜宿山寺》教学设计.docx
- 统编版(部编版)语文二年级上册《风娃娃》教学设计.docx
- 统编版(部编版)语文二年级上册《朱德的扁担》教学设计.docx
- 统编版(部编版)语文二年级上册《难忘的泼水节》教学设计.docx
- 统编版(部编版)语文二年级上册《纸船和风筝》教学设计.docx
最近下载
- 教师资格综合素质教育观-案例分析题应用 .pdf VIP
- 2023年普通高等学校招生全国统一考试化学试卷 辽宁卷(参考版)(无答案精品.pdf VIP
- 十年(2015-2024)高考真题数学分项汇编(全国通用)专题01 集合与常用逻辑用语(教师卷).pdf
- 数控机床机械系统装调与维修一体化教程 教学课件 作者 韩鸿鸾 数控机床机械系统装调与维修一体化教程教案_4 3模块四.doc VIP
- 2024学年度第一学期小学道德与法治五年级上册教学计划附教学进度.pdf VIP
- 2023年期货从业资格之期货投资分析通关考试题库带答案解析 .pdf VIP
- 总结好句好段的摘抄PPT.pptx
- 信息社会的未来发展 课件高中信息技术教科版(2019)必修2.pptx VIP
- 人教版高中地理必修1“地球上的水”教材分析及教学建议.pdf
- 北京交通大学2023年891通信原理考研真题及答案.pdf
文档评论(0)