150

我在 Linux 上使用 freeglut 在 C++ (g++) 中编写了一些效果,并使用

g++ -Wall -lglut part8.cpp -o part8

所以我想知道是否可以让 g++ 生成包含所需所有内容的静态编译 Windows 可执行文件?

我没有 Windows,所以如果我能在 Linux 上做到这一点,那就太酷了 :)

4

7 回答 7

123

mingw32 作为 Linux 的一个包存在。您可以使用它交叉编译和链接 Windows 应用程序。Code::Blocks 论坛上有一个教程。例如,请注意命令更改x86_64-w64-mingw32-gcc-win32为 。

例如,Ubuntu 的存储库中有 MinGW:

$ apt-cache search mingw
[...]
g++-mingw-w64 - GNU C++ compiler for MinGW-w64
gcc-mingw-w64 - GNU C compiler for MinGW-w64
mingw-w64 - Development environment targeting 32- and 64-bit Windows
[...]
于 2010-01-09T16:31:04.237 回答
36

在 Linux 中为 Windows 编译的一种选择是通过 mingw。我在这里找到了一个非常有用的教程。

要在基于 Debian 的系统上安装 mingw32,请运行以下命令:
sudo apt-get install mingw32

要编译你的代码,你可以使用类似的东西:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp

您有时会想直接在 Linux 中测试新的 Windows 应用程序。您可以为此使用葡萄酒,但您应该始终牢记葡萄酒可能有虫子。这意味着您可能无法确定错误是否存在于 wine、您的程序或两者中,因此仅使用 wine 进行一般测试。

要安装 wine,运行:
sudo apt-get install wine

于 2013-07-19T07:30:59.873 回答
33

建议的方法在 Ubuntu 16.04 上给了我错误: E: Unable to locate package mingw32

==================================================== ==========================

要在 Ubuntu 上安装此软件包,请使用以下命令:

sudo apt-get install mingw-w64

安装后就可以使用了:

x86_64-w64-mingw32-g++

请注意!

对于 64 位使用: x86_64-w64-mingw32-g++

对于 32 位使用: i686-w64-mingw32-g++

于 2017-11-01T18:09:38.967 回答
18

从包管理器安装交叉编译器,例如 mingw64。然后按以下方式编译:而不是简单地为 32 位 Windows 或64 位 Windows调用gcccall 。我也会使用该选项,因为目标系统可能没有所有库。i686-w64-mingw32-gccx86_64-w64-mingw32-gcc"--static

如果要编译其他语言,例如 Fortran,请在前面的命令中-gcc替换为。-gfortran

于 2016-01-13T19:01:58.940 回答
7

我在 Linux 上使用 mingw 在 C 中制作 Windows 可执行文件,我怀疑 C++ 也可以。

我有一个项目,ELLCC,将 clang 和其他东西打包成一个交叉编译器工具链。我用它为 Windows 编译 clang (C++)、binutils 和 GDB。请点击ellcc.org上的下载链接,获取适用于多个 Linux 主机的预编译二进制文件。

于 2010-01-09T16:31:48.747 回答
5

来自:https ://fedoraproject.org/wiki/MinGW/Tutorial

从 Fedora 17 开始,可以轻松地为 win32 和 win64 目标构建(交叉编译)二进制文件。这是使用 mingw-w64 工具链实现的:http: //mingw-w64.sf.net/。使用此工具链,您可以为以下编程语言构建二进制文件:C、C++、Objective-C、Objective-C++ 和 Fortran。

“使用 Windows 交叉编译器的提示和技巧”:https ://fedoraproject.org/wiki/MinGW/Tips

于 2014-02-23T03:37:07.963 回答
5

对于 Fedora:

# Fedora 18 or greater
sudo dnf group install "MinGW cross-compiler"

# Or (not recommended, because of its deprecation)
sudo yum groupinstall -y "MinGW cross-compiler"
于 2014-10-20T14:00:30.863 回答