链接脚本用来指定目标文件生成输出文件时的规则,其中,必不可少的命令是:SECTIONS,它精确控制了输入段在输出文件中的顺序、位置和所在段。下面是在 SECTIONS 命令中定义一个段的完整语法:
SECTIONS {
...
secname start BLOCK(align) (NOLOAD) : AT ( ldadr )
{ contents } >region :phdr =fill
...
}
其中,secname 和 contents 是必须有的,其他是可选的。
1)secname 指定了输出段的名称,比如 .text、.data。
2)contents 指定了输出段的内容,它可以是输入文件,或者是输入文件中的某一个段,例如:
.data : {
afile.o bfile.o cfile.o
}
或者:
.data : {
filename( section, section, ... )
* (section section ...)
}
3)start 指定该段的起始地址
4)BLOCK(align) 指定段起始的对齐大小
5)(NOLOAD) 防止一个段被多次加载进内存
6)AT(ldar) 指定段的加载地址
7)>region 给该段指定一个已定义的内存区域
8) :phdr 将该段分配给一个或多个程序段 (segment(s) described by a program header)
9)=fill 指定该段的初始填充值