LLD の技術詳細
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
をサポートするようになりました。関連項目