提问者:小点点

编译动态库时消除对MinGW特定DLL的依赖


我正在使用msys2编译一个使用autotools作为构建系统的库。最终结果是DLL。DLL最终引用了msys2附带的以下其他DLL:

  • libgcc_s_seh-1. dll
  • libstdc-6. dll
  • lib win p线程-1. dll

如何静态链接这些并消除这些依赖?

还有其他问题与此有关(示例),解决方案建议使用选项-strist-libgcc-strist-libstdc。这些在链接. exe时有效,但在链接.dll时似乎不起作用。

我在运行./figure之前设置了以下变量(并检查了输出以验证这些编译器选项是否真的被使用),但是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混合编写的,并具有CAPI。


共1个答案

匿名用户

尝试在LDFLAG中使用-sight选项。我刚才在MSYS2中测试了它,它对我有效。