Linux嵌入式开发--链接脚本

链接脚本

文件格式名: .lds

SECTIONS{
//精确控制了输入段在输出文件中的顺序、位置和所在段
    .= 0X87800000;
    //. 为地址符号,该处申明链接的起始地址
    .text:
    //.text代表从上述地址(代码段的起始地址)开始填入代码段信息
    {
        start.o	//其中一部分代码段
        *(.text)	//表示剩余所有代码段
    }
    .rodata ALIGN(4) : {*(.rodata)}
    //常量段信息,ALIGN(4)代表4个字节对齐
    
    .data ALIGN(4) : {*(.data)}
    //初始化的变量(初始化不为0)信息
    
    __bss_start = .;
    //此处的.代表bss段的起始地址,将其赋值给.bss
    .bss ALIGN(4) : {*(.bss)}
    __bss_end = .;
    //bss段结束地址,效果同上
}

详细介绍见:https://blog.csdn.net/dongdong0071/article/details/86498209

**

1. text段

.text --代码段,存放程序执行代码的区域。
**

**

2. data段

初始化(初始化不为0)的数据段(变量),存放程序中已初始化的全局变量。
**

**

3. bss段

未初始化或初始化为0的数据段,分为两种:bss、COMMON
bss -> 未初始化或初始化为0的静态变量,以及初始化为0的全局变量;
COMMON -> 未初始化的全局变量。
故上述代码可写为:

    __bss_start = .;
    .bss ALIGN(4) : {*(.bss) *(COMMON)}
    __bss_end = .;

**

**

4. rodata段

只读数据段,存放C中字符串和常量(一般为#define定义的常量,像立即数这种常量就不在rodata中)
**

**

5. heap堆

存放进程运行中被动态分配的内存段,大小并不固定,可用malloc、free申请释放内存
**

**

6. stack栈

存放程序临时创建的局部变量及函数调用压栈入栈(注:stack申明的局部变量存放在数据段)。
**

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值