1

現在、D の私のプロジェクトには、さまざまなライブラリがたくさんあります。それらを静的にリンクして単一のexeにすることは可能ですか(サイズは問題ありません)。

どのコマンドを DMD に渡す必要がありますか、または DUB 構成で指定する方法はありますか?

4

1 に答える 1

1

ラチェットフリークが言ったように、依存関係を静的ライブラリ自体としてコンパイルする必要があります。依存関係を静的ライブラリとして取得したら、動的ライブラリと同じように のlibsエントリに一覧表示できます。dub.json

素晴らしい例ではないかもしれませんが、静的ビルドdub.jsonと動的ビルドの両方を作成したいプロジェクトを管理するために使用するものを次に示します。このセクションを使用しconfigurationsて、静的ビルドと動的にリンクされたビルドを分離します。ビルドするときは、フラグを使用し--config=て静的ビルドと動的ビルドのどちらかを選択します。

依存関係の静的ライブラリを自分で作成し、それらをシステムのライブラリ検索パスに配置したくない場合は、 -L オプションを使用しlflagsて静的ライブラリの場所を指定できます。

直接の依存関係を静的にコンパイルしても、必ずしもプロジェクトに動的な依存関係がないというわけではありません。依存関係の依存関係に動的にリンクしている可能性があります (それらも静的にコンパイルしない限り)。たとえば、上でリンクしたプロジェクトはallegroとそのモジュールに静的にリンクされていますが、allegro同様liboggに andの依存関係に動的にリンクされてlibpngいます (それらの静的バージョンをコンパイルしなかったため)。

于 2015-01-17T22:12:47.057 に答える