一、目的
在上一篇《GNU LD脚本命令语言(一)》中我们已经讲解了链接脚本语言的一些基本知识,本篇在此基础上上继续介绍主要的几个命令以及各个选项的含义。
二、介绍
参考资料
MEMORY命令
链接器默认配置是支持所有可用地址空间的分配的;可以使用MEMORY命令定义目标平台(cortex-M系列中常说的地址空间映射)中内存块首地址和大小;也就是说可以通过MEMORY指令描述哪些地址空间可以被链接器使用;当定义了REGION后我们可以将输出段指定在某个REGION中(链接器会基于REGION的地址设置输出段的地址),如果某个REGION空间不足,输出段无法放入,链接器就会报错;一个链接脚本中最多只能有一个MEMORY指令。
MEMORY
{
name [( attr )] : ORIGIN = origin , LENGTH = len
...
}
name是REGION的名称,在链接脚本之外没有意义,并且REGION的名称使用独立的名称空间,所以不用担心重名问题(不会和符号名、文件名、段名冲突),但是不同的REGION需要使用不同的名称;
方括号是可选的,“(attr)”里面定义了REGION的属性。
当一个输入段在链接脚本中没有显式进行映射(也就是没有为某些输入段进行输出段描述),链接器会自动为这些输入段创建一个输出段,段名和输出段名相同;如果此时我们也定义了REGION属性,链接器就可以使用这些属性为这些输出段选择对应的REGION。可用的属性包括:
R:只读段
Wÿ