gcc 从linux交叉编译windows 64位.exe

vawmfj5a  于 2023-01-30  发布在  Linux
关注(0)|答案(3)|浏览(282)

我知道如果我想在Linux上编译一个32位的.exe文件,我可以在Linux上安装和使用mingw 32包(例如apt-get install mingw 32)。如果我想编译一个64位的windows.exe文件呢?有没有工具或方法可以做到这一点?

hc2pp10m

hc2pp10m1#

看起来我的答案在于Mingw-w64项目,该项目可用于主机操作系统Linux、Darwin和Windows

bpsygsoo

bpsygsoo2#

我知道这个问题很老了,已经有一个公认的答案,但我会张贴这个答案的方式,我现在这样做。它是相当简单和直接,我希望它能帮助任何人登陆这里:
要在Linux机器上交叉编译Windows应用程序,你只需要安装mingw-w64 C和C++编译器。在基于debian的系统上,你只需要这样做:

sudo apt install -y gcc-mingw-w64 g++-mingw-w64

这将为64位和32位交叉编译安装gcc(c编译器)g++(c++编译器)**
之后,如果您需要64位应用程序,只需执行以下操作:

x86_64-w64-mingw32-g++ hello.c -o hello.exe

如果您需要32位应用程序,只需:

i686-w64-mingw32-g++ hello.c -o hello.exe

就这么简单!

7dl7o3gd

7dl7o3gd3#

也可以从MSYS2安装MinGW。主要优点是:

  • 通常是最新的MinGW,不管您的Linux发行版提供什么。
  • 有很多。

提供了几种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

然后:

  1. env/shell.sh打开一个设置了正确环境变量的shell。
  2. win-clang++ hello.cpp使用交叉编译的标志调用Clang。
  3. ./a.exe在Wine中运行生成的应用(如果已安装)。
    充分披露:我是准msys2的开发者。

相关问题