栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

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

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705648.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号