GNU链接器(LD):输入分区的垃圾回收及保护处理(KEEP命令)介绍

0 参考资料

c 复制代码
GNU-LD-v2.30-中文手册.pdf
GNU linker.pdf

1 前言

一个完整的编译工具链应该包含以下4个部分:

(1)编译器

(2)汇编器

(3)链接器

(4)lib库

在GNU工具链中,对应的是:

(1)编译器:GCC(GNU Compiler Collection,GNU编译器套件)

(2)汇编器:GAS(GNU Assembler,GNU汇编器)

(3)链接器:LD(GNU Linker,GNU链接器)

(4)lib库:glibc(GNU C Library,GNU C 库)

本文介绍GNU链接器(LD)链接器脚本中输入分区的垃圾回收及保护处理(KEEP命令)。

2 GNU链接器(LD):输入分区的垃圾收集处理(KEEP命令)介绍

当我们的编译命令添加了'--gc-sections'命令选项,链接时会进行垃圾收集,可能会将不需要被当做垃圾处理的分区处理掉。为了避免这种情况发生,可以使用KEEP()命令将不需要淘汰的输入分区保护起来。例子如下:

c 复制代码
KEEP(*(.init))

以上KEEP命令保护.init段,.init段会被libc_nano(精简版C库)使用到,要避免被优化掉。

相关推荐
工作10年+,存储芯片行业4 天前
SSD 端到端数据保护:PI 三件套深度解析
ssd·nvme·芯片·存储·pcie·保护·nand
Joe_Wang510 天前
【从0到1学习JVM · 21】既不浪费空间又没有碎片,标记整理算法到底慢在哪
jvm·学习·算法·垃圾回收·标记整理算法
Joe_Wang510 天前
【从0到1学习JVM · 25】同样都要停顿所有线程,Parallel比Serial到底强在哪
java·jvm·学习·垃圾回收
Joe_Wang510 天前
【从0到1学习JVM · 15】对象在堆里来回倒腾,究竟怎样才会进老年代?
java·jvm·学习·垃圾回收
Joe_Wang511 天前
【从0到1学习JVM · 14】堆内存各区域分工与Xms和Xmx设为一样的真相
java·jvm·学习·垃圾回收
七夜zippoe2 个月前
DolphinDB 数据备份恢复实战:从策略设计到灾难演练的完整保护方案
数据备份·保护·dolphindb·策略设计·灾难演练
CodeStats2 个月前
【Java GC】Java JVM 垃圾回收(GC)完全指南:从内存结构到并发回收的底层原理
java·jvm·gc·垃圾回收·zgc·内存结构
LING-Z3 个月前
JVM GC 机制详解:算法、分代、回收器、GC 类型一篇讲透
java·jvm·垃圾回收
至乐活着3 个月前
深入Python内存管理与垃圾回收:从引用计数到分代回收的实战解析
python·性能优化·内存管理·垃圾回收·引用计数
fengxin_rou4 个月前
Java垃圾回收机制深度解析:从原理到实战
java·jvm·性能优化·gc·垃圾回收