*.lds是链接脚本,链接脚本就是程序链接时的参考文件,其主要目的是描述如何把输入文件中的section映射到输出文件中,并控制输出文件的存储布局。链接脚本的中section是其基本单元。
链接脚本的标准格式如下:
SECTIONS
{
sections-command
sections-command
}
1)在链接脚本中,单独的点号(.)代表了当前位置;
2)*.lds 中的.text 、 .data 、 .bss 分别是 text 段、data 段、bss 段的段名(这些段名并不是固定的,是可以随便起的);
3)bss_start 和 bss_end 保存的是 bss 段的起始地址和结束地址。
备注:
i)data 段:数据段(datasegment)通常是指用来存放程序中已初始化的全局变量的一块内存区域。数据段属于静态内存分配。
ii)text 段:代码段通常是指用来存放程序执行代码的一块内存区域。这部分区域的大小在程序运行前就已经确定,并且内存区域通常属于只读,某些架构也允许代码段为可写,即允许修改程序。在代码段中,也有可能包含一些只读的常数变量,例如字符串常量等。
iii)bss段:指用来存放程序中未初始化的全局变量的一块内存区域。BSS 是英文 BlockStarted bySymbol 的简称。当我们的程序有全局变量是,它是放在 bss 段的,由于全局变量默认初始值都是0,所有我们需要手动清 bss 段。