链接器脚本的作用
前面我们使用arm-linux-gcc交叉工具链,在交叉链接的过程中,使用过链接器脚本文件,
arm-linux-ld -T led.lds -o led.elf led.o //(多个.o文件要都链接,就都放在这)
链接器脚本,顾名思义,它是在程序链接过程中,来控制可执行程序产生过程的文件
,对于我们编写的同一个程序源代码,如果链接器脚本的编写稍有不同,最终的可执行程序也会有不同的结果。所以它对我们程序产生起着十分重要的作用,一定要合理配置。
如何编写链接器脚本
- 基本结构 【代码段、数据段、bss段的基本配置】
- 起始链接地址 【在代码段之前设置起始链接地址】
- 对齐 【设置每个段四字节对齐】
- 变量 使【用变量】
- 代码段首文件 【设置代码段首文件,确定CPU上点首先执行哪个程序】
SECTIONS{
. = 0x0; //2) 设置其实地址
. = ALIGN(4);
.test : //1) 3个段的基本结构
{
start.o(.test) //5) 设置代码段的首执行文件
*(.test)
}
. = ALIGN(4); //3) 每个段的四字节对齐
.data :
{
*(.data)
}
. = ALIGN(4);
bss_start = . ; //4) 可以使用变量
.bss :
{
*(.bss)
}
bss_end = . ; //注意哪些地方加‘;’ 哪些地方不加
}