写点什么

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

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

    阅读完需:约 3 分钟

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:002778

评论

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

GPU 容器虚拟化新能力发布和全场景实践

Baidu AICLOUD

GPU容器虚拟化

5G与妈祖守护的那片海

脑极体

5G

基于袋鼠云实时开发平台开发 FlinkSQL 任务的实践探索

袋鼠云数栈

sql flink 实时开发

软件测试/测试开发丨Selenium的常用元素定位方法

测试人

Python 软件测试 自动化测试 测试开发 selenium

人脸识别技术的精度提高及其应用

来自四九城儿

Spring Loaded代码热更新实践和原理分析 | 京东云技术团队

京东科技开发者

spring 热更新 Loader 企业号 7 月 PK 榜

如何用 TDengine 预测 “未来”

爱倒腾的程序员

涛思数据 tdengine 时序数据库

手把手教你如何做手机PCB电磁兼容性设计

华秋PCB

电磁 PCB 电路板 电子 PCB设计

山西等级保护测评机构有哪些?有几家?

行云管家

信息安全 等级保护 等保测评 等级测评 山西

数智驱动 百业共荣!亚信科技精彩亮相2023 MWC上海展

亚信AntDB数据库

数据库 AntDB AntDB数据库

5G与妈祖守护的那片海

白洞计划

5G

【OpenAI】ChatGPT函数调用(Function Calling)实践 | 京东云技术团队

京东科技开发者

openai 数据交互 企业号 7 月 PK 榜 Function Calling

[杂谈] 从PDF文件中进行表格抽取(tabula || paddle-pp-structure)

alexgaoyh

paddle 版式还原 表格提取 tabula pp-structure

人脸识别技术的安全性和隐私保护

来自四九城儿

HDC开发者盛典 | 破解创业老板高效制果汁奥秘挑战!赢取代金券、按摩枕、收纳袋等礼品~

华为云PaaS服务小智

云计算 软件开发 华为云 华为开发者大会2023

了解Java可见性的本质

阿里技术

Java java 编程

玩转“擎舵”,秒变AIGC时代营销创意“掌舵人”

Geek_2d6073

架构课模块一作业

庚小庚

解决ueditor表格拖拽没反应的问题

互联网工科生

数据库 Vue

人脸识别技术在智能家居中的应用

来自四九城儿

PoseiSwap 治理通证POSE登录PancakeSwap,开盘涨幅超2100%

西柚子

ABAQUS有限元分析软件吃CPU还是GPU比较多?

思茂信息

gpu cpu 显卡 ANAQUS 有限元分析

ElasticSearch - 批量更新bulk死锁问题排查 | 京东云技术团队

京东科技开发者

elasticsearch MQ 企业号 7 月 PK 榜 BulkProcessor

文盘Rust -- FFI 浅尝 | 京东云技术团队

京东科技开发者

rust C语言 企业号 7 月 PK 榜 FFI

关于Java已死,看看国外开发者怎么说的

越长大越悲伤

Java 后端

从GaussDB(DWS)的技术演进,看数据仓库的积淀与新生

华为云开发者联盟

数据库 后端 华为云 华为云开发者联盟 企业号 7 月 PK 榜

分享实录 | NGINX 网络协议优化(下)

NGINX开源社区

nginx TCP TLS HTTP

“多”维演进:智能编码的深度进化

阿里云视频云

云计算 编码 视频编码 视频云

为什么越来越多的网站选择海外主机跨越国界?

一只扑棱蛾子

海外主机

制造业用哪款堡垒机好一点?为什么?

行云管家

网络安全 堡垒机 双因子认证 制造业

研发质量指标大 PK:MTTR vs MTBF,谁是靠谱王?

LigaAI

高可用性 研发效能度量 MTTR 研发效能管理 企业号 7 月 PK 榜

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