写点什么

LLVM 4 中将加入新的 LLVM 链接器 LLD

  • 2017-02-23
  • 本文字数:984 字

    阅读完需:约 3 分钟

AI 大模型超全落地场景&金融应用实践,8 月 16 - 19 日 FCon x AICon 大会联诀来袭、干货翻倍!

LLD 将被添加到 LLVM 4 rc1 中,并默认启用。LLD 自称在性能上大大优于 GCC ld。虽然该新链接器早可用于构建在用的 FreeBSD/amd64 基系统(base system),但是这次将其添加到 LLVM 中依然是实验性的,在出现问题时会回退到 rc2。

在最新发布的 FreeBSD 项目季度状态报告中,下面一段话是对 LLD 进展情况和成熟度的最好实证:

上个季度中,LLD 开发人员做出了很大的进展。随着变更已提交到 LLD 和 FreeBSD,我们达成了一个重要的里程碑,即现在可以使用 LLD 链接整个 FreeBSD/amd64 基系统(内核与用户层)。

此外,BSD 项目贡献的一些补丁使得LLD 可以链接近95% 的BSD ports,大约是两万五千多个软件包。

LLD 工作启动于2015 年五月,目标在于重写ELF(UNIX)和COFF(Windows)系统链接器以提供更高的性能。据LLD 开发人员说,新链接器在总体上会比 GNU gold linker 快 1.2 到 2 倍,而 GNU gold linker 本身也是 Google 为改进 ld 链接性能而在内部创建的。事实上,LDD 可以比 ld 和 gold快得更多,尤其是编译大规模代码库时。另一方面,对于小型程序或者大量使用共享库的程序,LDD 的优势就并非那么明显了。和gold 一样,LLD 并不使用 BFD 格式去对不同的二进制文件格式做抽象。

尤其值得一提的是,LLD 非常之小,相比于 gold 的十六万五千行代码,用于 COFF 链接器的 LDD 只有七千行代码,而用于 ELF 链接器的是一万八千行代码。此外,它也可以嵌入到静态库等程序中,还可用于调用 lld::elf::link 入口点。

如果想在 LLVM 4 可用之前就试用 LLD,你可以通过构建源文件得到:

复制代码
$svn co http://llvm.org/svn/llvm-project/llvm/trunk llvm
$cd llvm/tools
$svn co http://llvm.org/svn/llvm-project/lld/trunk lld
$cd ../../..
$mkdir build
$cd build
$cmake -G “Ninja” -DCMAKE_BUILD_TYPE=”Release” -DCMAKE_INSTALL_PREFIX=”your_preferred_location” ../llvm
$ninja lld
$ninja install

一旦 LDD 编译完成,最安全可靠的使用方法是将 ld 逻辑链接到 ld.lld,这同样会使 LDD 与 GCC 一起工作。或者你也以使用 LLVM 的-fuse-ld=lld选项,这样就不必再做逻辑链接了。

查看英文原文: LLD, LLVM’s New Linker, Coming to LLVM 4


感谢冬雨对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-23 18:002678

评论

发布
暂无评论
发现更多内容

敏捷概念123之----敏捷洋葱圈

Ian哥

敏捷软件开发 敏捷宣言

MySQL外键约束

JavaEdge

12月日更

CSS之选择器(四)

Augus

CSS 12月日更

商场里的4S店

张老蔫

28天写作

Redis分布式锁的最佳实践 - Redisson

xcbeyond

redis 分布式锁 28天写作 12月日更

Rust 元宇宙 17 —— 聊天和表情

Miracle

rust 元宇宙

模块六

侠客行

「架构实战营」

架构实战毕业总结

人工智能~~~

Scrum框架下玩转敏捷实践

RingCentral铃盛

元宇宙100讲-0x002

hackstoic

元宇宙

Eureka分区集群部署

李子捌

微服务 28天写作 12月日更

架构实战营模块六拆分电商平台为微服务

Geek_99eefd

架构实战营 「架构实战营」

数据大体系(三)——指标

圣迪

大数据 数据 指标体系 指标 数据分层

42 K8S之调度器

穿过生命散发芬芳

k8s 28天写作 12月日更

与2宝的“有效”沟通经验 1

搬砖的周狮傅

沟通

LeSS- 大规模敏捷开发框架实践心路

RingCentral铃盛

知犀思维导图

IT蜗壳-Tango

28天写作 12月日更

【Promise 源码学习】第十八篇 - EventLoop 简介

Brave

源码 Promise 12月日更

电商系统微服务拆分

张靖

#架构实战营

秒杀系统架构

人工智能~~~

最可怕的黑客攻击:APT攻击

喀拉峻

网络安全 安全

尝鲜Go 1.18中范型版本的map和slice

Robert Lu

Go 语言 范型

【Three.js】WEB3D项目开发中实用工具推荐

devpoint

WebGL three.js 元宇宙 12月日更

架构实战营毕业总结

Rabbit

数字人民币跨境支付测试不断推进,内地居民未来在港购物也可用

CECBC

第六模块总结

张靖

「架构实战营」

OKR的一种实践

wood

OKR 28天写作 组织建设

拆分电商系统为微服务

奔奔

11. 《重学JAVA》--字符串

杨鹏Geek

Java 25 周年 28天写作 12月日更

Musical.ly 创始人:打造用户社区的三板斧

石云升

28天写作 12月日更 社区打造

三步搞定现场意外

将军-技术演讲力教练

LLVM 4中将加入新的LLVM链接器LLD_开源_Sergio De Simone_InfoQ精选文章