如何为 9.3-win32 MinGW 可执行文件静态链接缺少的 libgcc_s_seh-1.dll 和 libstdc++-6.dll DLL

Shu*_*eng 6 debian gcc windows mingw g++

我想使用 MinGW 在 Linux 上编译一个简单的 Windows 应用程序。

我编译如下:

x86_64-w64-mingw32-g++ -L. -l:mathlib.dll -o fib main.cpp mathlib.h
Run Code Online (Sandbox Code Playgroud)

这将生成一个可执行文件fib,该可执行文件使用从mathlib.dll.

现在,fib在 Windows 上执行时,它会抱怨libgcc_s_seh-1.dll并且libstdc++-6.dll丢失了。

如果我将这些 DLL 复制到 Windows,那么一切正常,但我不想将这些 MinGW 依赖项与每个可执行文件一起复制。

我如何静态链接这些 MinGW 依赖项,这样除了不foo依赖其他 DLL 之外mathlib.dll

Ste*_*itt 6

mathlib.dll使用-static-libgcc-static-libstdc++选项构建您的程序(以及,如有必要):

x86_64-w64-mingw32-g++ -static-libgcc -static-libstdc++ -L. -l:mathlib.dll -o fib main.cpp mathlib.h
Run Code Online (Sandbox Code Playgroud)

这将生成一个对libgcc和没有外部依赖关系的二进制文件libstdc++