Возможно, я сделаю некоторые неявные предположения. Если кто-то из них не прав, поправьте меня.
Окружающая обстановка
Win32, TDM GCC 4.6.1, Codeblocks 10.05, Codeblocks может компилировать C++ с помощью набора инструментов gnu.
Проблема
Насколько мне известно, stdlibС++ можно связать как динамически, так и статически. В настоящее время CodeBlocks связывает libstdc++ статически. Хотя я не смог найти какие-либо настройки, относящиеся к динамической/статической компоновке, на панели «настройки сборки» кодовых блоков, я мог проверить, используя монитор процесса, что он статически связывает стандартную библиотеку С++.
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++. К сожалению, я не смог найти явные параметры gcc для включения динамической компоновки libstdc++, документы по адресу http://gcc.gnu.org/onlinedocs/gcc/Link-Options.html сказать
Если libstdc++ доступна как разделяемая библиотека и параметр -static не используется, то это указывает на общую версию libstdc++.
Итак, как я могу динамически связать его с stdc++?