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

相关推荐
poemyang2 天前
内存泄漏 vs. 内存溢出:剖析Java虚拟机两大内存绝症的病因与疗法
java虚拟机·垃圾回收
poemyang3 天前
告别漫长GC停顿:深入解析G1如何实现可预测的毫秒级响应
java虚拟机·垃圾回收
poemyang4 天前
吞吐量、延迟、内存:深入理解垃圾回收的“三元悖论”
java虚拟机·垃圾回收
poemyang5 天前
不止新生代与老年代:深入Java虚拟机堆内存布局与TLAB、卡表等优化机制
java虚拟机·垃圾回收
狮子座的男孩5 天前
js基础:08、构造函数(共享方法)、原型(prototype)、原型对象、(修改原型)toString方法、垃圾回收
前端·javascript·经验分享·prototype·垃圾回收·构造函数·原型对象
poemyang9 天前
为什么我的应用会卡顿?垃圾回收中的STW难题与破解之道
java虚拟机·垃圾回收
poemyang11 天前
谁生?谁死?从引用计数到可达性分析,洞悉GC的决策逻辑
java虚拟机·垃圾回收
poemyang14 天前
为什么Java/Python程序无需关心内存释放?揭秘垃圾回收(GC)的核心概念
java虚拟机·垃圾回收
佛祖让我来巡山2 个月前
小区物业的智慧:轻松图解JVM垃圾回收的奥秘
gc·垃圾回收·安全区域·安全点·三色标记
网络研究院2 个月前
工业网络安全:保护制造系统和数据
网络·安全·系统·数据·工业·保护