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

Linux嵌入式开发--链接脚本,第1张

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申明的局部变量存放在数据段)。
**

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5704211.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存