读书笔记---链接脚本的语法解析

本文介绍了链接脚本的基础命令SECTIONS,详细解析了如何通过该命令定义输出文件的结构,包括段的命名、重定位地址、对齐要求、加载选项等,并说明了这些设置对于程序运行的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

链接脚本的基本命令是SECTIONS命令,其形象的描述了输出文件的结构:输出文件中各段、各文件怎么放置。
一个SECTIONS命令内部包含一个或者多个段,段(Section)是链接脚本的基本单元,它表示输入文件中的某部分怎么放置在输出文件中。
完整的链接脚本格式如下,它的核心部分是段(Section):
SECTIONS{

sectionname start ALIGN(n) (NOLOAD) : AT(loader)
{contents} >region :phdr =fill

}
sectionname和contents是必需的,前者用来命名这个段的段名,猴子用来确定代码中的什么部分放在这个段中。
start是这个段的重定位地址,也称为运行地址。如果代码中有位置相关的指令,程序运行时,这个段必须放在这个地址上。
ALIGN(n)虽然指定了运行地址,但是仍可以使用ALIGN(n)来指定对齐要求—这个对齐的地址才是真正运行的地址。
(NOLOAD):用来告诉加载器,在运行时不用加载这个段。显然,这个选项只有在有操作系统的情况下才有意义。
AT(ldadr):指定这个段在编译出来的映象文件中的地址—加载地址(load address)。如果不适用这个选项,则加载地址等于运行地址。通过这个选项,可以控制各段分别保存输出文件中不同的位置,便于把文件保存到单板上:A段放在A处,B段放在B处,运行前再把A、B段分别读出来组装成一个完整的执行程序。
后续几个选项“>region :phdr =fill”很难用到,如果想研究也可以参考链接脚本的语法,那里面有详细的解释。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值