Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/163.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 代码块:如何链接libstdc++;动态的?_C++_Gcc_Linker_G++_Codeblocks - Fatal编程技术网

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