C++ 代码块:如何链接libstdc++;动态的?
我可能会做一些隐含的假设。如果有错的话,请纠正我 环境C++ 代码块:如何链接libstdc++;动态的?,c++,gcc,linker,g++,codeblocks,C++,Gcc,Linker,G++,Codeblocks,我可能会做一些隐含的假设。如果有错的话,请纠正我 环境 Win32,TDM GCC 4.61,CODBROCK 10.05,CODEBROCK能够使用GNU工具链编译C++。 问题 据我所知,动态和静态链接stdlibc++也是可能的。当前代码块静态链接libstdc++。虽然在CODBOLD“构建设置”面板中找不到与动态/静态链接相关的设置,但我可以通过使用过程监视器来验证它静态连接C++标准库。 代码块使用以下参数执行g++: mingw32-g++.exe -o bin\Release
Win32,TDM GCC 4.61,CODBROCK 10.05,CODEBROCK能够使用GNU工具链编译C++。 问题 据我所知,动态和静态链接stdlibc++也是可能的。当前代码块静态链接libstdc++。虽然在CODBOLD“构建设置”面板中找不到与动态/静态链接相关的设置,但我可以通过使用过程监视器来验证它静态连接C++标准库。 代码块使用以下参数执行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++是静态链接的。我还可以在process explorer中验证加载的dll是否不包含libstdc++-6.dll
到目前为止我都试过了
我查看了代码块构建设置页面,没有发现任何内容。Codeblock提供了向g++添加参数的可能性。不幸的是,我找不到显式的gcc参数来打开libstdc++的动态链接
如果libstdc++作为共享库可用,则使用-static选项
如果未使用,则此链接针对libstdc++的共享版本
那么,如何使它动态链接到stdc++?最后,我找到了一个解决方案。必须补充一点
-shared-libstdc++
指向链接器选项。现在它动态链接stdc++libs