我在Linux上使用freeglut用C ++(g ++)编写了一些效果,然后用
编译它们g++ -Wall -lglut part8.cpp -o part8
所以我想知道是否有可能让g ++制作包含所需内容的静态编译Windows可执行文件?
我没有Windows,所以如果我能在Linux上做到这一点真的很酷:)
答案 0 :(得分:73)
mingw32作为Linux的包存在。您可以使用它交叉编译和链接Windows应用程序。有一个教程here at the Code::Blocks forum。请注意,该命令会更改为x86_64-w64-mingw32-gcc-win32
,例如。
$ 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
[...]
答案 1 :(得分:26)
在Linux中编译Windows的一个选择是通过mingw。我找到了一个非常有用的教程here。
要在基于Debian的系统上安装mingw32,请运行以下命令:
sudo apt-get install mingw32 mingw32-binutils mingw32-runtime
要编译代码,您可以使用以下内容:
i586-mingw32msvc-g++ -o myApp.exe myApp.cpp
您有时希望直接在Linux中测试新的Windows应用程序。你可以使用葡萄酒,但你应该始终记住葡萄酒可能有虫子。这意味着您可能无法确定葡萄酒,您的计划或两者中的错误,因此只能使用葡萄酒进行一般测试。
要安装葡萄酒,请执行:
sudo apt-get install wine
答案 2 :(得分:12)
从包管理器安装交叉编译器,如mingw64。
然后按以下方式编译:而不是简单地为32位Windows调用gcc
调用i686-w64-mingw32-gcc
或为64位Windows调用x86_64-w64-mingw32-gcc"
。我也会使用--static
选项,因为目标系统可能没有所有库。
如果要编译其他语言(如Fortran),请在先前的命令中将-gcc
替换为-gfortran
。
答案 3 :(得分:12)
建议的方法在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-gc ++
对于32位使用: i686-w64-mingw32-g ++
答案 4 :(得分:5)
我在Linux上使用mingw在C中制作Windows可执行文件,我怀疑C ++也能正常工作。
我有一个项目,ELLCC,它将clang和其他东西打包成交叉编译工具链。我用它来编译clang(C ++),binutils和GDB for Windows。按照ellcc.org下载链接获取多个Linux主机的预编译二进制文件。
答案 5 :(得分:4)
来自: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
答案 6 :(得分:1)
for Fedora it's
sudo yum groupinstall -y "MinGW cross-compiler"