在linux下用c++编译windows程序需使用mingw-w64交叉编译工具链,如x86_64-w64-mingw32-g++,生成可直接在windows运行的.exe文件,并建议静态链接运行时库以减少依赖。

在 Linux 下用 C++ 编译 Windows 程序,核心是使用 MinGW-w64 交叉编译工具链,而不是普通 GCC。它能生成 Windows 可执行文件(.exe),无需 Windows 系统或 Wine。
安装 MinGW-w64 交叉编译器
Ubuntu/Debian 系统直接安装:
- sudo apt update && sudo apt install g++-mingw-w64-x86-64(生成 64 位 Windows 程序)
- 如需 32 位,装 g++-mingw-w64-i686
- 安装后,编译器命令通常是 x86_64-w64-mingw32-g++(64 位)或 i686-w64-mingw32-g++(32 位)
写一个简单测试程序
新建 hello.cpp:
#include <iostream>
int main() {
std::cout << "Hello from Linux! This runs on Windows.\n";
return 0;
}
注意:不依赖 Linux 特有 API(如 fork、epoll),避免链接失败。
立即学习“C++免费学习笔记(深入)”;
用交叉编译器构建 .exe
终端执行(以 64 位为例):
- x86_64-w64-mingw32-g++ -o hello.exe hello.cpp
- 加 -static-libgcc -static-libstdc++ 可静态链接运行时库,减少 Windows 上的 DLL 依赖
- 生成的 hello.exe 可直接复制到 Windows 运行(CMD 或 PowerShell)











