c++oding="utf-8" ?>
在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 <p>注意:不依赖 Linux 特有 API(如 fork、epoll),避免链接失败。</p>
<h3>用交叉编译器构建 .exe</h3>
<p>终端执行(以 64 位为例):</p>
<ul>
<li><font color="blue">x86_64-w64-mingw32-g++ -o hello.exe hello.cpp</font></li>
<li>加 <font color="blue">-static-libgcc -static-libstdc++</font> 可静态链接运行时库,减少 Windows 上的 DLL 依赖</li>
<li>生成的 <font color="blue">hello.exe</font> 可直接复制到 Windows 运行(CMD 或 PowerShell)</li>
</ul>
<h3>处理<a style="color:#f60; text-decoration:underline;" title="常见问题" href="https://m.php.cn/zt/28932.html" target="_blank">常见问题</a>
</h3>
<ul>
<li>
<strong>找不到头文件?</strong> 确保没混用系统 GCC(如误敲 <font color="blue">g++</font>)。检查命令是否带完整前缀(<font color="blue">x86_64-w64-mingw32-g++</font>)</li>
<li>
<strong>链接失败(如 libwinpthread)?</strong> 加 <font color="blue">-static</font> 或显式链接:<font color="blue">-lwinpthread</font>
</li>
<li>
<strong>想用 CMake?</strong> 写 <font color="blue">toolchain-mingw64.cmake</font>,设置 <font color="blue">CMAKE_SYSTEM_NAME Windows</font> 和 <font color="blue">CMAKE_CXX_COMPILER</font> 路径,再用 <font color="blue">cmake -DCMAKE_TOOLCHAIN_FILE=... .</font>
</li>
</ul></iostream>
C++免费学习笔记(深入):立即使用
在学习笔记中,你将探索 C++ 的入门与实战技巧!











