c++kquote>在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
int main() {
std::cout << "Hello from Linux! This runs on Windows.\n";
return 0;
}
注意:不依赖 Linux 特有 API(如 fork、epoll),避免链接失败。
用交叉编译器构建 .exe
终端执行(以 64 位为例):
- x86_64-w64-mingw32-g++ -o hello.exe hello.cpp
- 加 -static-libgcc -static-libstdc++ 可静态链接运行时库,减少 Windows 上的 DLL 依赖
- 生成的 hello.exe 可直接复制到 Windows 运行(CMD 或 PowerShell)
处理常见问题
-
找不到头文件? 确保没混用系统 GCC(如误敲 g++)。检查命令是否带完整前缀(x86_64-w64-mingw32-g++)
-
链接失败(如 libwinpthread)? 加 -static 或显式链接:-lwinpthread
-
想用 CMake? 写 toolchain-mingw64.cmake,设置 CMAKE_SYSTEM_NAME Windows 和 CMAKE_CXX_COMPILER 路径,再用 cmake -DCMAKE_TOOLCHAIN_FILE=... .