链接脚本用来指定目标文件生成输出文件时的规则,其中,必不可少的命令是:SECTIONS,它精确控制了输入段在输出文件中的顺序、位置和所在段。下面是在 SECTIONS 命令中定义一个段的完整语法:

SECTIONS { ... secname start BLOCK(align) (NOLOAD) : AT ( ldadr ) { contents } >region :phdr =fill...
}

其中,secname 和 contents 是必须有的,其他是可选的。

1)secname 指定了输出段的名称,比如 .text、.data。

2)contents 指定了输出段的内容,它可以是输入文件,或者是输入文件中的某一个段,例如:

.data : { afile.o bfile.o cfile.o
}

或者:

.data : {filename( section, section, ... )* (section section ...)
}

3)start 指定该段的起始地址

4)BLOCK(align) 指定段起始的对齐大小

5)(NOLOAD) 防止一个段被多次加载进内存

6)AT(ldar) 指定段的加载地址

7)>region 给该段指定一个已定义的内存区域

8) :phdr 将该段分配给一个或多个程序段 (segment(s) described by a program header)

9)=fill 指定该段的初始填充值

链接脚本中的SECTIONS定义相关推荐

  1. 链接脚本中 text、data、bss、rodata 段含义

    我们一般编译出来的代码都包含在 text. data. bss 和 rodata 这四个段内,链接脚本中常常对这 4 个段进行布局. 全局变量才算是程序的数据,局部变量不算程序的数据,只能算是函数的数 ...

  2. Shell脚本中函数的定义和调用笔记

    Shell脚本函数的作用主要是把一些可以通用的功能封装起来.避免脚本中出现大量重复的脚本代码,同时可以大大增强脚本的可读性.和可维护性. Shell函数定义的语法格式: function FUNCTI ...

  3. linux shell alias,Linux shell脚本中使用alias定义的别名

    核心知识点 shopt 开启和关闭 alias 扩展 交付模式默认是开启的,脚本的默认是关闭的 alais 扩展的名称是 expand_aliases alias 定义 在当前session中,可以直 ...

  4. Linker Scripts3--简单的链接脚本命令2-Assigning Values to Symbols

    1.前言 本章继续讲述简单脚本命令的后半部分 2.Assigning Values to Symbols 你可以给一个符号(symbol)赋值,它会把这些定义的符号放入全局符号表(symbols ta ...

  5. 【软件开发底层知识修炼】十一 链接器-链接脚本

    上一篇文章学习了链接器之-main函数不是第一个执行的函数:main函数不是第一个执行的函数 今天继续学习链接器,学习链接是如何动作的,从而引入链接脚本的概念.本文就学习链接脚本的概念. 1.链接脚本 ...

  6. 嵌入式Linux系统中的.lds链接脚本基础

    from:http://www.embeddedlinux.org.cn/html/xinshourumen/201203/04-1989.html 连接脚本的格式 ================= ...

  7. java中的导入gnu,GNU链接脚本使用

    GNU链接脚本使用 链接脚本主要作用是描述输入文件的section是如何映射到输出文件的内存布局中.通俗的讲法就是编译完成后的各个obj文件,按照哪种顺序放与bin的哪个地址中:同时将运行时变量符号与 ...

  8. 软件构建之链接应用--链接脚本

    链接脚本的基本概念 链接脚本用于描述链接器如何将输入文件格式化为可执行的输出文件,所谓输入文件既为汇编后的目标文件(.o或.obj等结尾). 基本命令: ENTRY (Symbol) 用于设置程序第一 ...

  9. 【linux kernel】基于ARM64分析linux内核的链接脚本vmlinux.lds.S

    文章目录 一.导读 二.链接器是什么 三.链接脚本 四.linux内核的链接脚本 4-1 头文件包含描述 4-2 参数设置和宏定义描述 4-3 SECTIONS内容分析 五.linux内核的" ...

最新文章

  1. CVPR 2020 | 元学习人脸识别框架详解
  2. java学习与总结:MySQL和数据库基础知识
  3. 015_请求转发和重定向
  4. 你在使用Gmail,Wallop,MSN Spaces,Three Degrees吗?
  5. 华为做raid5步骤_华为RH2288V5服务器做RAID 0(官方推荐做法)
  6. 【后台任务】将工作请求发送到后台服务(11)
  7. C#绘图工具之Move
  8. java量_Java 2. 量与常量
  9. 音视频开发(13)---视频监控系统必须知道的一些基础知识
  10. ES11新特性_可选链操作符---JavaScript_ECMAScript_ES6-ES11新特性工作笔记064
  11. json最大长度限制_MongoDB参数限制和阀值
  12. VBA连接MySQL数据库以及ODBC的配置(ODBC版本和MySQL版本如果不匹配会出现驱动和应用程序的错误)...
  13. 阿里云马涛:云原生时代的开源操作系统长什么样
  14. mac配置adb环境变量
  15. 商家APP店内点餐开启有桌台点餐模式
  16. 工行银企互联接入详解(1)--流程说明
  17. 浅析ERP系统--人资
  18. 语音论文优选:口语理解A Streaming End-to-End Framework For SLU
  19. DIY多快充协议太阳能充电器!----快充协议实现原理
  20. ARGB与RGB、RGBA的区别

热门文章

  1. Echart 画图表
  2. 智能窗帘控制(光、红外、蓝牙)
  3. 【902】大恒相机网络配置
  4. 尚融宝29-提现和还款
  5. 哪里东西更便宜?读《卧底经济学(珍藏版)》
  6. java(File、IO流)
  7. pdf文件如何进行翻译?pdf文件翻译方法分享。
  8. 如何将Excel多行单元格文字合并到一个单元格中
  9. 三次改变世界、却被无情出局的程序员
  10. 第8周编程题在线测试