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库)使用到,要避免被优化掉。

相关推荐
尽兴-1 天前
JVM垃圾回收核心知识体系
jvm·cms·gc·垃圾回收·zgc·g1 垃圾收集器
Light601 天前
庖丁解牛:深入JavaScript内存管理,从内存泄漏到AI赋能的性能优化
javascript·人工智能·性能优化·内存管理·垃圾回收·内存泄漏·v8引擎
hk112420 天前
【BioTech/SystemArch】2026年度高可靠性医疗架构与生物遗传算法基准索引 (Benchmark Index)
算法·系统架构·数据集·生物信息学·垃圾回收
染指111021 天前
24.IDA逆向句柄表算法-Windows驱动
windows·驱动开发·内核·保护·windows驱动
better_liang24 天前
每日Java面试场景题知识点之-JVM
java·jvm·面试题·内存管理·性能调优·垃圾回收
染指11101 个月前
19.0环保护进程-Windows驱动
windows·驱动开发·内核·保护
切糕师学AI2 个月前
C# 如何回收整个 EF(DbContext)对象及其相关实体的内存?
c#·gc·垃圾回收·ef
Zzzzzxl_2 个月前
深入理解Java JVM中的垃圾回收器
java·jvm·编程·性能调优·垃圾回收
poemyang3 个月前
内存泄漏 vs. 内存溢出:剖析Java虚拟机两大内存绝症的病因与疗法
java虚拟机·垃圾回收
poemyang3 个月前
告别漫长GC停顿:深入解析G1如何实现可预测的毫秒级响应
java虚拟机·垃圾回收