我正在使用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。
尝试在LDFLAG中使用-sight
选项。我刚才在MSYS2中测试了它,它对我有效。