BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース LLVMの新しいリンカLLDがLLVM 4で導入へ

LLVMの新しいリンカLLDがLLVM 4で導入へ

原文(投稿日:2017/02/21)へのリンク

GCCのldを大幅に性能改善したLDDが、近くLLVM 4 rc1に組み込まれ、デフォルトで使用されるようになる。この新しいリンカは、稼働中のFreeBSD/amd64ベースのシステムではすでに使用されているが、LLVMでの利用はまだ試験段階であり、問題が発生すればrc2では保留される可能性もある。

LLDを導入することのメリットとその成熟度は、先日リリースされたFreeBSDプロジェクトの四半期ステータスレポートに最もよく示されている。

LLDの開発者たちは、この四半期で大きな進歩を達成しました。LLDとFreeBSD双方にコミットされた変更により、私たちは大きなマイルストンに到達しました – LLDを使用して、FreeBSD/amd64ベースのシステム全体(カーネルとユーザ領域)のリンクが可能になったのです。

さらにBSDプロジェクトが寄贈した多数のパッチにより、BSDポートの約95%、パッケージ数にして25,000以上が、LLDを使ってリンク可能になった。

LLDの開発は2015年5月、ELF(Unix)およびCOFF(WIndows)システムリンカのパフォーマンス向上を目的として開始された。開発者たちによると、LLDは、ldよりも高速なリンカとしてGoogleが開発したGNU goldリンカに比較しても、全体で1.2~2倍高速だという。実際にLDDは、特に大規模なコードベースにおいて、ldgoldよりもはるかに高速だ。一方で、小さなプログラムや、あるいは共有ライブラリを多用するプログラムにおいては、メリットはあまり期待できない。goldと同じく、LLDは、異なるバイナリファイルフォーマットを抽象化するBFDを使用しない。

注目に値するのは、約165,000行のgoldに比較してLDDが、COFFリンカで7,000行、ELFリンカで18,000行と、非常にコンパクトであることだ。さらに、プログラムの中に静的ライブラリとして組み込んで、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のコンパイルが完了すれば、それを使用する最も確実な方法は、ldld.lldにシンボリックリンクすることだ。この方法ならばGCCでも動作する。あるいはLLVM -fuse-ld=lldオプションを使用すれば、シンボリックリンクの必要はない。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

BT