GNU linker script,ld script,GNU链接脚本 待填坑

https://blog.csdn.net/itxiebo/article/details/50937412

https://blog.csdn.net/itxiebo/article/details/50938753

一、什么是GNU linker script?作用是什么?

.lds文件,即linker script,决定了可执行映像(image)的链接方式,以及各个段的装载地址(装载域)和执行地址(运行域)

  1. 装载地址:运行之前各段的地址;
  2. 运行地址:运行时各段的地址。

二、对GNU linker script的简单认识

首先,完整版的官网Gnulinkerscript下载地址如下,此文件可作为参考文献使用。
http://pan.baidu.com/s/1hriLMb6

GNU官方网站上对.lds文件形式的基本描述:

SECTIONS
{
    ...
    secname start BLOCK(align)(NOLOAD) : AT(ldadr)
    { contents } >region :phdr =fill
    ...
}

两个必须的(secname, contents),其他optional

secname:段名,用以命名此段。

contents:决定哪些内容放在本段,可以是整个目标文件(.o),也可以是目标文件中的某段(代码段、数据段等)。

start:是段的重定位地址,即本段运行的地址。如果代码中有位置无关指令,程序运行时这个段必须放在这个地址上。start可以用任意一种描述地址的符号来描述。

BLOCK(align) 指定块对齐。比如,前一个段从0x30000000到0x300003F1,此处标记ALIGN(4),表示此处最小占用4Bytes,即使下一个段是紧挨这个段,那么下一个段的起始地址(也就是运行地址)为0x300003F4。

NOLOAD:告诉加载器程序运行时不加载该段到内存。

AT(ldadr):定义本段存储(加载)的地址,如果不使用这个选项,则加载地址等于运行地址,通过这个选项可以控制各段分别保存于输出文件中不同的位置。

 

转载于:https://www.cnblogs.com/idyllcheung/p/11322073.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值