我正在使用msys2编译一个使用autotools作为构建系统的库。最终的结果是一个DLL。这个 DLL 最终会引用到 msys2 中的其他 DLL。
libgcc_s_seh-1.dll
libstdc++-6.dll
libwinpthread-1.dll
我怎样才能静态地链接这些DLL并消除这些依赖关系?
还有其他问题涉及到这个问题 (例子),解决方案建议使用选项 -static-libgcc -static-libstdc++
. 这些工作在连接一个 .exe
但是,当连接到某一项目时,它们似乎不起作用。.dll
.
在运行之前,我设置了以下变量 ./configure
(并检查了输出,以验证这些编译器选项是否真的被使用),但Dependency Walker仍然显示出对 libstdc++-6.dll
,和以前一样。
export CFLAGS="-static-libgcc -static-libstdc++" CXXFLAGS="-static-libgcc -static-libstdc++" LDFLAGS="-static-libgcc -static-libstdc++"
(我认为这些必须只放在LDFLAGS中,但由于我没有完全理解,我也把它们加在了CFLAGS和CXXFLAGS中。)
在链接DLL,而不是EXE时,有没有办法去掉这些依赖关系?
这个库是用C和C++混合编写的,有C API。
试着只使用 -static
选项的LDFLAGs。 我刚才在MSYS2中测试了一下,对我来说是可行的。