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

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

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

我编译如下:

x86_64-w64-mingw32-g++ -L. -l:mathlib.dll -o fib main.cpp mathlib.h

这会生成一个可执行文件fib,该可执行文件使用从 导入的函数来计算第 N 个斐波那契数mathlib.dll

现在,当fib在 Windows 上执行时,它会抱怨libgcc_s_seh-1.dlllibstdc++-6.dll丢失。

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

我如何静态链接这些 MinGW 依赖项,以便foo不依赖其他 DLL mathlib.dll

答案1

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

这将生成一个不依赖外部 DLL 的二进制libgcc文件libstdc++

相关内容