如何在Linux上调用MinGW交叉编译器
How do I invoke the MinGW cross-compiler on Linux?
我有一个项目,我想为Windows交叉编译。我有适当的Makefile和一切工作与g++
。我运行
$ apt install mingw-w64
并下载了500mb的软件包,但我不知道如何实际运行它。没有mingw
可执行文件,那么我如何实际使用它进行编译?
如果你看一下Ubuntu包服务器上mingw-w64
组成包的文件列表:
-
gcc-mingw-w64-x86-64
-
g++-mingw-w64-x86-64
-
binutils-mingw-w64-x86-64
-
mingw-w64-x86-64-dev
-
gcc-mingw-w64-i686
-
g++-mingw-w64-i686
-
binutils-mingw-w64-i686
-
mingw-w64-i686-dev
你可以看到mingw-w64
提供了一个工具链,即一组可选择的工具(编译器,链接器,头文件等),用于为另一个系统编译代码。
假设您想为64位系统编译c++代码,您需要使用/usr/bin/x86_64-w64-mingw32-g++-win32
。您可以使用CXX
环境变量告诉大多数makefile使用该编译器编译代码。
另一个选择是看看Mingw交叉环境(MXE),它专门针对从Linux到Windows(最近也包括到Mac)的交叉编译。该包内置了对大量库的支持,并且正在积极开发中。只要浏览一下网站,看看它是否适合你的需要。
顺便说一下,建议您使用开发版本而不是发布版本。这是因为发布版本通常非常快地过时,因为包维护者(库)更改url导致MXE发布版本被破坏。开发版本通常是最新的。
我用这个来交叉编译postgres:
$ sudo apt-get install mingw-w64
$ ./configure --host=i686-w64-mingw32 --without-zlib # 32 bit
# or --host=x86_64-w64-mingw32 64 bit
ref这里
其他项目的做法不同,比如ffmpeg:
./configure --target-os=mingw32 --cross-prefix=i686-w64-mingw32-
或
./configure CC=i686-w64-mingw32-gcc ...
等。GL !
我的目标是mingw g++
交叉编译器:
$ ./configure --with-mingw-cross-compiler=g++-mingw-w64-i686
相关文章:
- 安装MinGW后C++编译器不起作用?
- VSCode - C++ - MinGW 编译器的问题
- C++:如何在Windows 10上使用编译器MinGW 9.2.0安装OpenCV
- 如何使用MinGW编译器和SSL支持静态编译Qt
- 执行用 C++ 编写的.exe(使用 mingw 编译器)时出现问题
- 使用 Windows 10 和 MINGW 编译器在 VS Code 上使用 gdb 调试器进行调试时出错
- 避免使用MINGW编译器和NAR-Maven-Plugin避免使用机器依赖的POM
- false ||Mingw编译器v 6.3.0-1中的true给予0
- 在cygwin中使用mingw编译器编译c ++程序时缺少dll。
- 如何从Windows上的命令行使用MinGW编译器
- C++ 在 Code::Blocks 中使用 Gdiplus with MinGW 编译器
- 将 CString 替换为 mingw 编译器中的 eclipse
- 如何使 Mingw 编译器与 Qt 4.8.5 兼容
- MinGW编译器为pip "cannot find vcvarsall.bat"错误后,仍然无法正常工作
- MinGW编译器Windows版,使用GCC,C99与GNU99
- _O_WTEXT、_O_U16TEXT_O_U8TEXT - 这些模式在 mingw 编译器中是否可行,是否有任何解决方
- mingw编译器错误
- 我怎样才能把水冲干净?(环境:Mingw编译器,运行在xterm或minty的Cygwin)
- 在 MinGW g++ 编译器中获取"tlhelp32.h"的编译错误
- 我可以强制visual studio使用mingw编译器吗?