BT

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オプションを使用すれば、シンボリックリンクの必要はない。

 
 

この記事を評価

関連性
スタイル
 
 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

BT

あなたのプロファイルは最新ですか?プロフィールを確認してアップデートしてください。

Eメールを変更すると確認のメールが配信されます。

会社名:
役職:
組織規模:
国:
都道府県:
新しいメールアドレスに確認用のメールを送信します。このポップアップ画面は自動的に閉じられます。