You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下使用MinGW交叉编译C++文件运行时缺失dll问题求助

解决方案

方案1:全静态编译(推荐,单exe无额外依赖)

你之前的编译参数只覆盖了gcc和stdc++库的静态链接,没有包含MinGW依赖的winpthread线程库,添加-static参数强制所有可静态链接的库都使用静态版本即可,完整编译命令如下:

i686-w64-mingw32-g++ helloworld.cpp -o helloworld.exe -static -static-libgcc -static-libstdc++

编译完成后可以通过以下命令验证依赖,确认输出中没有libgcc_s_dw2-1.dll、libstdc++-6.dll、libwinpthread-1.dll这类MinGW运行库即可:

i686-w64-mingw32-objdump -x helloworld.exe | grep 'DLL Name'

正常全静态编译后的程序只会依赖Windows系统原生自带的核心库,放到任意Windows 32位系统上都可以直接运行。

方案2:动态链接+依赖dll打包

如果因为特殊需求不能使用全静态编译,可以把程序依赖的MinGW运行库和exe放在同一目录下分发即可。
对应32位MinGW的运行库默认存放在Linux系统的/usr/i686-w64-mingw32/bin/目录下,你需要复制的dll包括:

  • libgcc_s_dw2-1.dll
  • libstdc++-6.dll
  • libwinpthread-1.dll

补充说明

  • 如果需要编译64位Windows程序,替换编译工具为x86_64-w64-mingw32-g++,其余静态编译参数完全一致
  • 如果程序依赖第三方库,需要先将第三方库也编译为对应平台的静态版本,才能实现全静态打包

内容的提问来源于stack exchange,提问作者grialion

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 02:45:06