繁体   English   中英

如何使用 gcc/g++ 在 Linux 上为 Windows 编译?

[英]How to compile for Windows on Linux with gcc/g++?

我在 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:无法找到包 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。 然后按以下方式编译:而不是简单地调用gcc call i686-w64-mingw32-gcc for 32-bit Windows or x86_64-w64-mingw32-gcc" for 64-bit Windows。我也会使用--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"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM