链接脚本中的SECTIONS定义

链接脚本用来指定目标文件生成输出文件时的规则,其中,必不可少的命令是: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 指定该段的初始填充值

猜你喜欢

转载自blog.csdn.net/choumin/article/details/112299005