链接脚本

当应用程序运行在操作系统之上时,不需要显示的指定链接脚本,因为自己编写的链接脚本可能与操作系统默认环境不符,为了保证程序正常运行,使用编译器默认链接脚本,可以使用arm-linux-ld -verbose来查看该链接脚本

当程序运行在裸机情况或者操作系统本身,这是链接脚本就特别重要了

链接脚本格式

SECTIONS

{

sections-command

sections-command

......

}

一个SECTIONS命令由若干个sections-command组成,通过该命令我们可以设计出程序各段在内存中分布情况,即链接地址

一个典型的链接脚本如下:

ENTRY(start.o)

SECTIONS

{

.=0x1000000;

.text : {

*(.text);

}

.=0x2000000;

.data  ALIGN(32) :{

*(.data);

}

.bss  ALIGN(32)  :{

*(.bss);

}

}

解析:

1. (.)号是位置计数器,代表了当前位置,可以将值赋给它.如0x1000000代表了代码段的起始位置。可以将当前位置赋给变量在源程序中使用

2. 输出段定义:  .text,.data,.bss代表了个段的段名,但是输出的实际内容与段名无关,段名是可以随便取的。而是与花括号里面的内容是相关的,*(.text)表示目标文件的所有代码段都被链接到这一区域。.bss段的当前地址没有指定,则采用默认的值,即当前值等于0x2000000加上data段的值,很多情况bss段都是紧挨着data段存放着。

3. ALIGN(N)  以N字节对齐,在data段和bss段一定要对齐

4.ENTRY(start.o) 表示程序的入口

写完后就可以arm-linux-ld -T xxx.lds  *.o  -o  xxx 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值