LLD の技術詳細

提供: RAD Studio
移動先: 案内検索

C++ リンカ への移動

注意: この情報は、64 ビット Windows(Modern) プラットフォームに対してのみ適用されます。

コマンド ラインでの LLD 利用の情報については、「コマンド ラインでの LLD の利用」ページを参照してください。

LLD

LLD は LLVM プロジェクトのリンカであり、GNU BFD や gold リンカなど、システム リンカの代わりとなる機能であり、それらよりもはるかに高速に動作します。また、この機能はツールチェーン開発者にとって便利です。

LLD プロジェクトは、ELF (Unix)、PE/COFF (Windows)、Mach-O (macOS)、WebAssembly をサポートしています(これが完全性の降順です)。ただし、RAD Studio は Windows 用の COFF のみをサポートしています。

リンカ設定

LLD リンカの特性と動作に関する次の情報を考慮してください。

  • 未使用セクションのガベージ コレクション--gc-sections にマップされ、これがオフの場合には --no-gc-sections にマップされます。これは、最終的なバイナリ(EXE または DLL)のサイズを縮小するのに非常に役立ちます。
  • データ実行防止対応(デフォルトでオン)。オフの場合、--disable-nxcompat にマップされます。
  • 遅延ロード DLL--delayload=.. にマップされます。DLL のリストを遅延ロードできるようにします。
  • ファイルの整列--file-alignment= にマップされます。デフォルト値は 0x200(512)。
    注意: この値は、512 バイトの倍数でなければなりません。
  • オブジェクトの整列--section-alignment= にマップされます。デフォルト値は 0x1000(4096)。
    注意: この値は、512 バイトの倍数でなければなりません。
  • ASLR/高エントロピーアドレス空間レイアウトのランダム化(デフォルトでオン): オフの場合、--disable-dynamicbase にマップされます。
  • 冗長リンク: は、リンクの問題の診断に役に立ちます。
  • 再ファイルとオブジェクト/セクションの整列: リンカはまた、16 バイト境界でのデータ整列をサポートしています。これは、より新しい命令セットに対するキーです。従来の ilink はサポートしていませんでした。これが、過去に新しい命令セットをデフォルトで有効にしなかった理由の 1 つです。
  • RAD Studio は、コンパイラ オプション -fdata-sections-ffunction-sections をサポートするようになりました。

    関連項目