動的にリンクされたアプリケーションは300 KB
でしたが、静的なリンクの構築を試みることにしました。静的にリンクされたアプリケーションサイズの縮小
は、私は次のようにQtのを設定した:私は依存関係にリンクしなければならなかった、動的にリンクされたビルドで
configure -c++11 -mp -static -debug-and-release -platform win32-msvc2012 -opengl desktop -opensource -confirm-license -make libs -nomake tools -nomake tests -nomake examples -no-openssl -skip webkit
:
qtmain.lib
Qt5Gui.lib
Qt5Core.lib
Qt5Widgets.lib
Qt5Network.lib
Qt5WinExtras.lib
qwindows.lib
今、私は15個のライブラリを使用する必要があります!私は私の溶液中での正規表現も自由なタイプを使用していない場合、私は意味
qtmain.lib
qtpcre.lib
Qt5Gui.lib
Qt5Core.lib
Qt5Widgets.lib
Qt5Network.lib
Qt5WinExtras.lib
opengl32.lib
imm32.lib
Ws2_32.lib
Qt5PlatformSupport.lib
qtfreetype.lib
winmm.lib
qtharfbuzzng.lib
qwindows.lib
、なぜ私はqtpcre
、またはqtfreetype
をリンクしなければなりませんか?私は本当にそれらのすべてが必要ですか?
完全最適化を有効にしようとしました。
結果では、私のアプリケーションサイズは10,731KBであり、それは本当にイライラしてうつ病です。それを減らす可能性はありますか?外部アプリケーションはおそらく?
(はい、私はそれが静的なビルドだと、それは7メガバイト以下のファイルではありませんが、多分私は、少なくとも10メガバイトの下に得ることができます知っています?)
ダイナミックライブラリのセットに依存します。それらは順番に他の動的ライブラリに依存します。これは他のライブラリなどに依存します。静的にリンクする場合は、依存関係ツリー内のすべてのライブラリにリンクする必要があります。また、実行可能ファイルが非常に大きくなる可能性がありますが、これは静的リンクのトレードオフです。また、メモリ要件は実際には実際には変わらず、これらの動的ライブラリはすべてロードする必要があります。静的にリンクすると、OSによってロードされる必要があるファイルが1つだけなので、メモリを実際に節約できます。 –
正規表現を使用する必要はないかもしれませんが、使用するqtライブラリ関数は正規表現を必要とするため、それらをリンクする必要があります。静的リンクを使用する場合は、間接的な依存関係をすべて見つけることがあなたの責任です。動的リンクを使用している場合でも、動的リンカーがすべてのコードを処理するという点を除いて、すべてのコードを引き継いでいます。 –
また、デバッグやリリースのビルドに表示されるサイズですか?実行ファイルからデバッグやその他のメタデータを削除しようとしましたか?速度よりもサイズを最適化するためにコンパイラフラグを渡しますか? –