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

相关推荐
PLUS_WAVE17 天前
【CUDA 编译 bug】ld: cannot find -lcudart
服务器·c++·bug·环境·编译·cuda·ld
vivo互联网技术19 天前
Full GC 频率优化实战
后端·系统优化·java8·垃圾回收
codkingo1 个月前
Go - 内存逃逸
golang·垃圾回收
JIU_WW1 个月前
JVM面试专题
java·jvm·面试·java虚拟机·垃圾回收
zzlyyds2 个月前
深入理解三色标记、CMS、G1垃圾回收器
java·jvm·cms·垃圾回收·g1
Themberfue3 个月前
JVM ②-双亲委派模型 || 垃圾回收GC
java·jvm·gc·垃圾回收·类加载器·双亲委派模型·分代收集算法
bug丸5 个月前
v8引擎垃圾回收
前端·javascript·垃圾回收
伏虎山真人5 个月前
keepalived 各模式设置
linux·运维·服务器·负载均衡·keep
跳跳的向阳花5 个月前
16-03、JVM系列之:内存与垃圾回收篇(三)
jvm·垃圾回收·stringtable·垃圾回收器
柯3496 个月前
GC垃圾回收
java·jvm·垃圾回收