没有合适的资源?快使用搜索试试~ 我知道了~
Linux下的lds链接脚本基础,介绍了链接脚本基本概念,基本格式,以及一些例子等等
资源推荐
资源详情
资源评论
Linux 下的 lds 链接脚本基础
今天在看 引导 部分,发现要对链接脚本深入了解,才
能知道各个目标文件的内存分布映像,下面是我看到的一些资料
概论
基本概念
脚本格式
简单例子
简单脚本命令
对符号的赋值
命令
命令
!"# 命令
$ 命令
脚本内的表达式
暗含的连接脚本
概论
每一个链接过程都由链接脚本%&'()(*+一般以 &, 作为文件
的后缀名-控制链接脚本主要用于规定如何把输入文件内的
) 放入输出文件内+并控制输出文件内各部分在程序地址空间
内的布局但你也可以用连接命令做一些其他事情
连接器有个默认的内置连接脚本+可用 &,./( 查看连接选
项0( 和0 可以影响默认的连接脚本%如何影响1-
0 选项用以指定自己的链接脚本+它将代替默认的连接脚本。你也
可以使用2暗含的连接脚本3以增加自定义的链接命令
以下没有特殊说明,连接器指的是静态连接器
基本概念
链接器把一个或多个输入文件合成一个输出文件
输入文件4目标文件或链接脚本文件
输出文件4目标文件或可执行文件
目标文件%包括可执行文件-具有固定的格式+在 56
或 758 平台下+一般为 9 格式若想了解更多+可参考
568 平台可执行文件格式分析
有时把输入文件内的 ) 称为输入 )%*)-+
把输出文件内的 ) 称为输出 )%*)-
目标文件的每个 ) 至少包含两个信息4名字和大小大部分
) 还包含与它相关联的一块数据+称为 )
)%) 内容-一个 ) 可被标记为“&:,:&%可加
载的-;或“:&&)::&%可分配的-;
&:,:&)4在输出文件运行时+相应的 ) 内容将被载
入进程地址空间中
:&&)::&)4内容为空的 ) 可被标记为“可分配的”
在输出文件运行时+在进程地址空间中空出大小同 ) 指定大小
的部分某些情况下+这块内存必须被置零
如果一个 ) 不是“可加载的”或“可分配的”+那么该 ) 通
常包含了调试信息可用 <,=*0> 命令查看相关信息
每个“可加载的”或“可分配的”输出 ) 通常包含两个地址4
$?%/(:&==(@:,,( 虚拟内存地址或程序地址空间地
址-和 ?%&:,==(@:,,( 加载内存地址或进程地址空间
地址-通常 $? 和 ? 是相同的
在目标文件中+&:,:& 或 :&&)::& 的输出 ) 有两种地
址4$?%/(:&=(@?,,(-和 ?%:,=(@
?,,(-$? 是执行输出文件时 ) 所在的地址+而 ? 是
加载输出文件时 ) 所在的地址一般而言+某 ) 的
$?AA?但在嵌入式系统中+经常存在加载地址和执行地址
不同的情况4比如将输出文件加载到开发板的 B:> 中%由 ? 指
定-+而在运行时将位于 B:> 中的输出文件复制到 #? 中%由
$? 指定-
可这样来理解 $? 和 ?+假设4
%-,::) 对应的 $? 地址是 C+该 )
内包含了 个 位全局变量+、< 和 '+分别为 ++
%-) 内包含由”*(D%E<AF,E+<-G;程序片段产生的
代码
连接时指定,::) 的 $? 为 C+产生的 *(D
指令是将地址为 C 处的 字节内容作为一个整数打印
出来。
如果,::) 的 ? 为 C,显然结果是 <A
如果,::) 的 ? 为 C,显然结果是 <A
还可这样理解 ?4
) 内容的开始处包含如下两条指令%& 指令是
字节,每行对应 字节-4
<=*C
=/&HC+F:
如果) 的 ? 为 C+那么在进程地址空间
内 C 处为“<=*C;指令+C
处为 =/&HC+F: 指令假设某指令跳转到地址
C+显然它的执行将导致F: 寄存器被赋值为
如果) 的 ? 为 C+那么在进程地址空间
内 C 处为“<=*C;指令+C:
处为 =/&HC+F: 指令假设某指令跳转到地址
C+显然它的执行又跳转到进程地址空间内
C 处+造成死循环
符号%@=&-4每个目标文件都有符号表%I?I-+包含
已定义的符号%对应全局变量和 :) 变量和定义的函数的名字-和
未定义符号%未定义的函数的名字和引用但没定义的符号-信息
符号值4每个符号对应一个地址+即符号值%这与 ) 程序内变量的值不
一样+某种情况下可以把它看成变量的地址-可用 = 命令查看它
们%= 的使用方法可参考本 &J 的 75& 笔记-
脚本格式
链接脚本由一系列命令组成+每个命令由一个关键字%一般在其后紧
跟相关参数-或一条对符号的赋值语句组成命令由分号‘GK分隔开
文件名或格式名内如果包含分号’GL或其他分隔符+则要用引号‘”’将名
字全称引用起来无法处理含引号的文件名
剩余51页未读,继续阅读
资源评论
zhangwm2005
- 粉丝: 0
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功