我在 Linux 上使用 freeglut 在 C++ (g++) 中编写了一些效果,并使用
g++ -Wall -lglut part8.cpp -o part8
所以我想知道是否可以让 g++ 生成包含所需所有内容的静态编译 Windows 可执行文件?
我没有 Windows,所以如果我能在 Linux 上做到这一点,那就太酷了 :)
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
[...]
在 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
建议的方法在 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++
从包管理器安装交叉编译器,例如 mingw64。然后按以下方式编译:而不是简单地为 32 位 Windows 或64 位 Windows调用gcc
call 。我也会使用该选项,因为目标系统可能没有所有库。i686-w64-mingw32-gcc
x86_64-w64-mingw32-gcc"
--static
如果要编译其他语言,例如 Fortran,请在前面的命令中-gcc
替换为。-gfortran
我在 Linux 上使用 mingw 在 C 中制作 Windows 可执行文件,我怀疑 C++ 也可以。
我有一个项目,ELLCC,将 clang 和其他东西打包成一个交叉编译器工具链。我用它为 Windows 编译 clang (C++)、binutils 和 GDB。请点击ellcc.org上的下载链接,获取适用于多个 Linux 主机的预编译二进制文件。
来自: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
对于 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"