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

相关推荐
我叫于豆豆吖8 天前
了解云计算工作负载保护的重要性及必要性
负载··保护
极客先躯20 天前
高级java每日一道面试题-2024年10月22日-JVM篇-JVM堆栈概念,何时销毁对象?
java·开发语言·jvm·面试·垃圾回收·jvm篇·高级java
中草药z1 个月前
【JavaEE】JVM
java·jvm·笔记·java-ee·多线程·垃圾回收·stw
时光飞逝的日子2 个月前
GNU链接器(LD):位置计数器(.)功能及实例解析
ld·gnu链接器·位置计数器·.·句点
时光飞逝的日子2 个月前
GNU链接器(LD):设置入口点(ENTRY命令)的用法及实例解析
ld·gnu链接器·设置入口点·entry命令
时光飞逝的日子2 个月前
GNU链接器(LD):什么是符号?符号定义及实例解析
符号·gcc·链接脚本·gnu链接器·符号定义
我叫于豆豆吖2 个月前
了解云计算工作负载保护的重要性,确保数据和应用程序安全
负载··保护
小薯仔2 个月前
.net 之内存回收
.net·gc·垃圾回收
PerfMan2 个月前
基于eBPF的procstat软件追踪程序垃圾回收(GC)事件
linux·开发语言·gc·ebpf·垃圾回收·procstat