对多个输入文件进行链接得到一个输出文件
节:节名称,大小,节数据
输入节:输入文件中的节
输出节:输出文件中的节
加载节:节内数据,在运行时,被加载到内存
重加载节:节内无数据,在内存中要预留一个空间
调试节:含调试信息的节
符号名:带双引号, 不带双引号(不能同已有的关键字冲突)
在输入节中,未处理的孤儿节,被链接器放置在具有相同属性节的后面,若放不下,则放在文件尾部
ALIGN(align) 按指定数据对齐
ALIGN(exp,align) 按指定数据对齐 等同于ALIGN(.,align)
ORIGIN(ram) 计算内存区域的起址地址
LENGTH(ram) 计算内存区域的长度
. 表示定位计数器
VMA(virtual memory address):运行时的地址
LMA(load memory address):存储地址
输出节
SECTION [ADDRESS] [(TYPE)] : [AT(LMA)]
{
OUTPUT-SECTION-COMMAND
OUTPUT-SECTION-COMMAND
...
} [>REGION] [AT>LMA_REGION] [:PHDR :PHDR ...] [=FILLEXP]
SECTION输出节名
ADDRESS:运行的地址,若无,则用REGION设置它,若也无REGION,则用当前定位计数器
TYPE:默认即可, 也可用NOLOAD表示,这个节,运行时不加载
>REGION 将这个输入节放到哪个内存中
LMA_REGION
=FILLEXP 填充空白的数据
自定义一个内存区域
MEMORY
{
name [(attr)] : ORIGIN = origin, LENGTH = len
…
}
name 内存区名称
attr 属性 R W X A(Allocatable section) I(Initialized section) L(Same as 'I') !(插入以前的属性)
ORIGIN 开始地址
LENGTH 区域长度
程序头
PHDRS
{
name type [ FILEHDR ] [ PHDRS ] [ AT ( address ) ]
[ FLAGS ( flags ) ] ;
}
附英文 帮助文档
|
文件: |
ld-2.18.chm |
大小: |
250KB |
下载: |
下载 | |
阅读(1758) | 评论(0) | 转发(1) |