自学内容网 自学内容网

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

0 参考资料

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()命令将不需要淘汰的输入分区保护起来。例子如下:

KEEP(*(.init))

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


原文地址:https://blog.csdn.net/kevin1499/article/details/142426054

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!