
MinGWを使ってLinux上の単純なWindowsアプリケーションをコンパイルしたいと思います。
私はそれを次のようにコンパイルします:
x86_64-w64-mingw32-g++ -L. -l:mathlib.dll -o fib main.cpp mathlib.h
fib
これにより、N番目のフィボナッチ数を計算するためにインポートされた関数を使用する実行可能ファイルが作成されますmathlib.dll
。
今fib
Windowsで実行すると文句を言うlibgcc_s_seh-1.dll
とlibstdc++-6.dll
失われます。
これらのDLLをWindowsにコピーすると、すべてがうまく機能しますが、これらのMinGW依存関係をすべての実行可能ファイルにコピーしたくありません。
foo
これらのMinGW依存関係を静的にリンクして他のDLLに依存しないようにするにはどうすればよいですかmathlib.dll
?
答え1
mathlib.dll
とオプションを使用して-static-libgcc
プログラムをビルドします(必要な場合)-static-libstdc++
。
x86_64-w64-mingw32-g++ -static-libgcc -static-libstdc++ -L. -l:mathlib.dll -o fib main.cpp mathlib.h
これにより、外部DLLに依存しないlibgcc
バイナリが生成されますlibstdc++
。