2

おそらく私はいくつかの暗黙の仮定をします。それらのいずれかが間違っている場合は、私を修正してください。

環境

Win32、TDM GCC 4.6.1、Codeblocks 10.05、Codeblocksは、gnuツールチェーンを使用してC++をコンパイルできます。

問題

私の知る限り、stdlibc++を動的および静的にリンクすることも可能です。現在、CodeBlocksはlibstdc++を静的にリンクしています。コードブロックの「ビルド設定」パネルで動的/静的リンクに関連する設定を見つけることができませんでしたが、プロセスモニターを使用して、c++標準ライブラリを静的にリンクしていることを確認できました。

CodeBlocksは、次のパラメーターを使用してg++を実行します。

mingw32-g++.exe  -o bin\Release\fltk-hello.exe
obj\Release\fltk-hello.o   -s C:\MinGW32\lib\libfltk.a
C:\MinGW32\lib\libgdi32.a C:\MinGW32\lib\libole32.a
C:\MinGW32\lib\libuuid.a C:\MinGW32\lib\libcomdlg32.a
C:\MinGW32\lib\libcomctl32.a

次に、g++からの呼び出しがあります。

"c:/mingw32/bin/../libexec/gcc/mingw32/4.6.1/collect2.exe"
"-Bdynamic" "-o" "bin\Release\fltk-hello.exe" "-s"
"c:/mingw32/bin/../lib/gcc/mingw32/4.6.1/../../../crt2.o"
"c:/mingw32/bin/../lib/gcc/mingw32/4.6.1/crtbegin.o"
"-Lc:/mingw32/bin/../lib/gcc/mingw32/4.6.1"
"-Lc:/mingw32/bin/../lib/gcc"
"-Lc:/mingw32/bin/../lib/gcc/mingw32/4.6.1/../../../../mingw32/lib"
"-Lc:/mingw32/bin/../lib/gcc/mingw32/4.6.1/../../.."
"obj\Release\fltk-hello.o" "C:\MinGW32\lib\libfltk.a"
"C:\MinGW32\lib\libgdi32.a" "C:\MinGW32\lib\libole32.a"
"C:\MinGW32\lib\libuuid.a" "C:\MinGW32\lib\libcomdlg32.a"
"C:\MinGW32\lib\libcomctl32.a" "-Bstatic" "-lstdc++" "-Bdynamic"
"-lmingw32" "-lgcc" "-lmoldname" "-lmingwex" "-lmsvcrt" "-ladvapi32"
"-lshell32" "-luser32" "-lkernel32" "-lmingw32" "-lgcc" "-lmoldname"
"-lmingwex" "-lmsvcrt"
"c:/mingw32/bin/../lib/gcc/mingw32/4.6.1/crtend.o"

さて、この部分

"-Bstatic" "-lstdc++"

stdc++が静的にリンクされていることを明確にします。ロードされたdllにlibstdc++-6.dllが含まれていないことをインプロセスエクスプローラーで確認することもできます。

私がこれまでに試したこと

コードブロックのビルド設定ページを見回しても何も見つかりませんでした。Codeblockは、g++にパラメーターを追加する可能性を提供します。残念ながら、libstdc ++のダイナミックリンクをオンにする明示的なgccパラメータが見つかりませんでした、http://gcc.gnu.org/onlinedocs/gcc/Link-Options.htmlのドキュメントによる

libstdc ++が共有ライブラリとして使用可能であり、-staticオプションが使用されていない場合、これはlibstdc++の共有バージョンに対してリンクします。

では、どうすればstdc ++に動的にリンクさせることができますか?

4

1 に答える 1

1

最後に、解決策を見つけました。追加する必要があります

-shared-libstdc++

リンカーオプションに。stdc++ ライブラリを動的にリンクするようになりました。

于 2012-06-20T21:24:15.963 に答える