我知道如果我想在Linux上编译一个32位的.exe文件,我可以在Linux上安装和使用mingw 32包(例如apt-get install mingw 32)。如果我想编译一个64位的windows.exe文件呢?有没有工具或方法可以做到这一点?
hc2pp10m1#
看起来我的答案在于Mingw-w64项目,该项目可用于主机操作系统Linux、Darwin和Windows
bpsygsoo2#
我知道这个问题很老了,已经有一个公认的答案,但我会张贴这个答案的方式,我现在这样做。它是相当简单和直接,我希望它能帮助任何人登陆这里:要在Linux机器上交叉编译Windows应用程序,你只需要安装mingw-w64 C和C++编译器。在基于debian的系统上,你只需要这样做:
mingw-w64
sudo apt install -y gcc-mingw-w64 g++-mingw-w64
这将为64位和32位交叉编译安装gcc(c编译器) 和g++(c++编译器)**之后,如果您需要64位应用程序,只需执行以下操作:
gcc
g++
x86_64-w64-mingw32-g++ hello.c -o hello.exe
如果您需要32位应用程序,只需:
i686-w64-mingw32-g++ hello.c -o hello.exe
就这么简单!
7dl7o3gd3#
也可以从MSYS2安装MinGW。主要优点是:
提供了几种MinGW风格:x32和x64,具有不同的C运行时等等。您不能直接在Linux上安装MSYS2,但可以使用Quasi-MSYS2。1.安装Clang(和LLD):在Ubuntu上:
wget https://apt.llvm.org/llvm.sh chmod +x llvm.sh sudo ./llvm.sh rm llvm.sh
Clang可以使用MSYS2库交叉编译到Windows。或者,您可以在Wine中运行MSYS2 MinGW,但速度较慢。1.安装依赖项:
sudo apt install make wget tar zstd gpg wine
葡萄酒是可有可无的。1.安装Quasi-MSYS2和任何所需的MSYS2程序包:
git clone https://github.com/HolyBlackCat/quasi-msys2 cd quasi-msys2/ # Optionally, choose MSYS2 flavor, see full list at: https://www.msys2.org/docs/environments/ # echo MINGW64 >msystem.txt make install _gcc _gdb
然后:
env/shell.sh
win-clang++ hello.cpp
./a.exe
3条答案
按热度按时间hc2pp10m1#
看起来我的答案在于Mingw-w64项目,该项目可用于主机操作系统Linux、Darwin和Windows
bpsygsoo2#
我知道这个问题很老了,已经有一个公认的答案,但我会张贴这个答案的方式,我现在这样做。它是相当简单和直接,我希望它能帮助任何人登陆这里:
要在Linux机器上交叉编译Windows应用程序,你只需要安装
mingw-w64
C和C++编译器。在基于debian的系统上,你只需要这样做:这将为64位和32位交叉编译安装
gcc
(c编译器) 和g++
(c++编译器)**之后,如果您需要64位应用程序,只需执行以下操作:
如果您需要32位应用程序,只需:
就这么简单!
7dl7o3gd3#
也可以从MSYS2安装MinGW。主要优点是:
提供了几种MinGW风格:x32和x64,具有不同的C运行时等等。
您不能直接在Linux上安装MSYS2,但可以使用Quasi-MSYS2。
1.安装Clang(和LLD):
在Ubuntu上:
Clang可以使用MSYS2库交叉编译到Windows。或者,您可以在Wine中运行MSYS2 MinGW,但速度较慢。
1.安装依赖项:
葡萄酒是可有可无的。
1.安装Quasi-MSYS2和任何所需的MSYS2程序包:
然后:
env/shell.sh
打开一个设置了正确环境变量的shell。win-clang++ hello.cpp
使用交叉编译的标志调用Clang。./a.exe
在Wine中运行生成的应用(如果已安装)。充分披露:我是准msys2的开发者。