我在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:
例如,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可能有bug。这意味着你可能无法确定一个bug是在wine、你的程序中,或者两者都有,所以只用wine进行一般测试。
要安装wine,请运行。sudo apt-get install wine
建议的方法在Ubuntu 16. 04上给我带来了错误: E: Unable to locate package mingw32 (无法找到软件包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
召唤 i686-w64-mingw32-gcc
适用于32位Windows或 x86_64-w64-mingw32-gcc"
用于64位Windows。我还会使用 --static
选项,因为目标系统可能没有所有的库。
如果你想编译其他语言,比如Fortran,可以用下面的选项代替 -gcc
与 -gfortran
在前面的命令中,我使用了mingw来制作Windows的可执行文件。
我在Linux上用mingw做过C语言的Windows可执行文件,我怀疑C++也可以。
我有一个项目,ELLCC,它把clang和其他东西打包成一个交叉编译器工具链。我用它来编译clang (C++)、binutils和Windows的GDB。请关注以下下载链接 ellcc.org 以获取多个Linux主机的预编译二进制文件。
从。https:/fedoraproject.orgwikiMinGWTutorial。
从Fedora 17开始,可以很容易地为win32和win64目标构建(交叉编译)二进制文件。这是用mingw-w64工具链实现的。http:/mingw-w64.sf.net. 使用这个工具链,你可以为以下编程语言构建二进制文件。C、C++、Objective-C、Objective-C++和Fortran。
"使用Windows交叉编译器的提示和技巧"。https:/fedoraproject.orgwikiMinGWTips。
对于Fedora来说,它是
sudo yum groupinstall -y "MinGW cross-compiler"