我想使用 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.dll
和libstdc++-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++
。