7月的最后一期阅读推荐,我们要介绍的是一系列来自清华博士的技术blog(https://jia.je/)中《开发一个链接器》系列文章:
尽管很多人可能都知道有两本很著名的书《Linker and Loader》和《程序员的自我修养——链接、装载与库》,但是关于链接器也就是linker应该怎么实现,书里面似乎并没有太多的细节。这大概是因为linker的工作看起来就是比较的枯燥无味,但是真正去做一遍,你会学到很多很多的细节(至少编辑部觉得以前这方面确实是眼高手低,纸上得来终觉浅)。而且《开发一个链接器》系列文章在写作上也很友好(毕竟清华博士),稍微理解这方面的技术细节就不会有什么阅读障碍(说实话,很多技术写作者的文笔是真心烂,所以你以后读不懂技术文章,首先怀疑一下是不是作者的小学语文就没及格)。
话不多说,我们进入文章的正题,这一系列文章一共四篇,内容承接关系也非常清楚:
-
第一篇博客:支持单个 ELF 对象文件的链接
-
https://jia.je/software/2024/02/18/write-a-linker-1/
-
第二篇博客:支持多个 ELF 对象文件的链接
-
https://jia.je/software/2024/03/30/write-a-linker-2/
-
第三篇博客:支持生成动态库
-
https://jia.je/software/2024/04/06/write-a-linker-3/
-
第四篇博客:支持动态链接
-
https://jia.je/software/2024/04/07/write-a-linker-4/
实际上,开发一个迷你版但是全功能(支持多个ELF对象文件链接、支持动态库生成、同时支持动态库与静态对象文件合并链接)的linker并不复杂,作者甚至只用了区区1000行的Rust代码就完成了这个工作:
https://github.com/jiegec/cold/tree/master/src
这么好的技术文章,不让更多人读到真是太可惜了!大家快快点赞和转发吧!
原文始发于微信公众号(安全研究GoSSIP):G.O.S.S.I.P 阅读推荐 2024-07-31 开发一个链接器
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论