NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

Go 语法

小万哥

Go 编程 程序员 云原生 后端

代码随想录Day39 - 动态规划(二)

jjn0703

软件测试 | 客户端怎么访问内网数据库

测吧(北京)科技有限公司

测试

HDC.Together 2023高校人才生态论坛成功举办

最新动态

CentOS 7内核升级教程。

百度搜索:蓝易云

云计算 Linux centos 运维 内核

亲临时代,成为历史

少油少糖八分饱

读书感悟 财富 时代发展 职业道路 阅读笔记

深入理解 HDFS(二):Replica

冰心的小屋

hdfs replica 大数据存储

Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结

大瞿科技

Bito AI: IDEA 代码提效插件

Monin

AI IDEA chrom AIGC 代码提效

Monkey基本参数介绍

霍格沃兹测试开发学社

技术分享 | Appium环境安装与架构介绍

霍格沃兹测试开发学社

Redash可视化BI系统部署安装及简单使用

百度搜索:蓝易云

云计算 Linux 运维 BI redash

Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结

BlockChain先知

软件测试 | 忘记MySQL的root密码

测吧(北京)科技有限公司

测试

Zebec 创始人 Sam 对话社区,“Zebec 生态发展”主题 AMA 回顾总结

西柚子

自然语言理解问答对话文本数据,赋予计算机智能交流的能力

来自四九城儿

代码随想录Day38 - 动态规划(一)

jjn0703

技术分享 | app自动化测试(Android)--元素定位方式与隐式等待

霍格沃兹测试开发学社

在云服务器中部署stable diffusion webui教程。

百度搜索:蓝易云

Linux 运维 webUI Diffusion Stable

HDC2023:元服务助力梦里水乡发展智慧文旅,让服务触手可及

最新动态

用React仿钉钉审批流、工作流

悠闲的水

前端 工作流 流程审批系统

Screen Recorder by Omi for Mac(屏幕录制软件) v1.3.2中文版

mac

屏幕录制 苹果mac Screen Recorder by Omi

技术分享 | app自动化测试(Android)--App 控件定位

霍格沃兹测试开发学社

情感语音识别为人工智能赋予情感洞察的能力

来自四九城儿

8. 字符串详解

茶桁

Python

多方聚力共育人才,华为携手产学研赋能HarmonyOS开发者

最新动态

聊聊测试开发工程师的职责定位问题

大卡尔

测试开发

2023-08-06:小青蛙住在一条河边, 它想到河对岸的学校去学习 小青蛙打算经过河里 的石头跳到对岸 河里的石头排成了一条直线, 小青蛙每次跳跃必须落在一块石头或者岸上 给定一个长度为n的数组ar

福大大架构师每日一题

福大大架构师每日一题 左神

技术分享 | App常见bug解析

霍格沃兹测试开发学社

软件测试 | Cluster的启动

测吧(北京)科技有限公司

测试

技术分享 | Appium 用例录制

霍格沃兹测试开发学社

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