Minimalist GNU for Windows
文章目录
- Minimalist GNU for Windows
- 一、MinGW 和 MinGW-w64 的安装
- 1. 在 Windows 上安装 MinGW-w64
- 2. 在 macOS 和 Linux 上安装 MinGW-w64
- 二、使用 MinGW-w64 编译代码
- 三、MinGW 编译选项
- 四、MinGW-w64 常用命令
- 五、MinGW 开发示例
- 六、调试与优化
- 七、 卸载 MinGW
- 1、windows卸载
- 1.1 使用 MinGW Installation Manager 卸载
- 1.2 手动删除 MinGW 文件夹
- 2. 在 MSYS2 上卸载 MinGW-w64
- 3. 在 macOS 或 Linux 上卸载 MinGW-w64
- 3.1 使用 Homebrew 卸载(macOS)
- 3.2 手动卸载(Linux)
- 4. 检查是否已成功卸载
- 七、资源
MinGW
(Minimalist GNU for Windows)是一组 GNU 工具,专门用于在 Windows 平台上编译 C、C++ 和 Fortran 等语言的代码。它提供了一个 Windows 版的
gcc
编译器,使开发者可以在 Windows 上使用 GNU 工具链进行开发。
mingw-w64
是
MinGW
的扩展版,支持 64 位系统并提供更多功能。
一、MinGW 和 MinGW-w64 的安装
1. 在 Windows 上安装 MinGW-w64
-
通过 MSYS2 安装 MinGW-w64
-
下载 MSYS2,安装并运行。
-
运行以下命令更新 MSYS2:
pacman -Syu
-
关闭并重启 MSYS2 终端,然后运行:
pacman -Syu
-
安装
mingw-w64
编译器:pacman -S mingw-w64-x86_64-gcc # 64位 pacman -S mingw-w64-i686-gcc # 32位
-
配置环境变量,使编译器可以在任意路径下使用。
-
-
通过 MinGW-w64 Installer 安装
- 从 MinGW-w64 下载页面 下载安装程序。
- 选择适合的架构(32 位或 64 位)、编译器版本等进行安装。
- 添加安装路径到环境变量
PATH
。
2. 在 macOS 和 Linux 上安装 MinGW-w64
mingw-w64
也可以在 macOS 和 Linux 上安装,用于交叉编译 Windows 可执行文件。
-
macOS:
brew install mingw-w64
-
Linux(以 Debian/Ubuntu 为例):
sudo apt update sudo apt install mingw-w64
二、使用 MinGW-w64 编译代码
-
编译简单的 C/C++ 程序
创建一个
hello.c
文件:#include <stdio.h> int main() { printf("Hello, MinGW!\n"); return 0; }
使用 MinGW 编译:
x86_64-w64-mingw32-gcc hello.c -o hello.exe
生成的
hello.exe
文件可以在 Windows 上直接运行。 -
编译为 32 位或 64 位可执行文件
- 使用
x86_64-w64-mingw32-gcc
编译 64 位程序。 - 使用
i686-w64-mingw32-gcc
编译 32 位程序。
- 使用
-
跨平台编译
使用
mingw-w64
进行跨平台开发时,可以在 Linux 或 macOS 上生成 Windows 可执行文件。以下是在 Linux/macOS 上交叉编译 Windows 应用的示例:x86_64-w64-mingw32-gcc hello.c -o hello.exe
-
链接 Windows 库
MinGW-w64 提供了一些 Windows 专有的库,可以使用
-l
参数进行链接。例如,要使用wininet
库来访问 Windows 的网络 API:x86_64-w64-mingw32-gcc myprogram.c -o myprogram.exe -lwininet
三、MinGW 编译选项
-Wall
:打开所有警告信息。-O2
:进行优化编译。-m32
或-m64
:指定生成 32 位或 64 位代码。-shared
:生成动态链接库(DLL)。-static
:生成静态链接的可执行文件。
四、MinGW-w64 常用命令
x86_64-w64-mingw32-gcc
:64 位 Windows 程序的 C 编译器。x86_64-w64-mingw32-g++
:64 位 Windows 程序的 C++ 编译器。i686-w64-mingw32-gcc
:32 位 Windows 程序的 C 编译器。i686-w64-mingw32-g++
:32 位 Windows 程序的 C++ 编译器。
五、MinGW 开发示例
-
生成 DLL 文件
例如,要生成一个简单的动态链接库,可以创建
mydll.c
文件:#include <windows.h> __declspec(dllexport) void hello() { MessageBox(NULL, "Hello from DLL!", "MinGW DLL", MB_OK); }
编译生成 DLL:
x86_64-w64-mingw32-gcc -shared -o mydll.dll mydll.c -Wl,--out-implib,libmydll.a
-
在 C++ 中使用 Windows API
#include <windows.h> #include <iostream> int main() { MessageBox(NULL, "Hello from MinGW-w64!", "Windows API", MB_OK); return 0; }
使用
mingw-w64
编译:x86_64-w64-mingw32-g++ myprogram.cpp -o myprogram.exe
六、调试与优化
-
启用调试信息
使用-g
选项生成调试信息:x86_64-w64-mingw32-gcc -g myprogram.c -o myprogram.exe
-
优化编译
-O2
:大多数优化。-O3
:开启所有优化(可能增加编译时间)。
-
静态链接
使用-static
选项可以生成不依赖外部 DLL 的可执行文件:x86_64-w64-mingw32-gcc -static myprogram.c -o myprogram.exe
卸载 MinGW 的步骤取决于你的操作系统和安装方式。以下是不同情况下的卸载方法:
七、 卸载 MinGW
1、windows卸载
1.1 使用 MinGW Installation Manager 卸载
如果通过 MinGW Installation Manager 安装了 MinGW,可以按以下步骤卸载:
- 打开 MinGW Installation Manager。
- 在列表中找到已安装的
mingw32-base
或其他包,右键点击并选择 Mark for Removal。 - 点击 Installation 菜单,选择 Apply Changes,开始卸载。
1.2 手动删除 MinGW 文件夹
如果是手动安装的 MinGW(未使用安装程序),可以直接删除 MinGW 安装文件夹。常见路径是 C:\MinGW
或 C:\Program Files (x86)\MinGW
。
- 打开文件资源管理器,导航到 MinGW 的安装目录。
- 选中该文件夹并删除。
- 删除 MinGW 路径变量:
- 打开 控制面板 > 系统和安全 > 系统 > 高级系统设置。
- 选择 环境变量。
- 在 系统变量 中找到
Path
变量,点击 编辑。 - 找到 MinGW 的路径(如
C:\MinGW\bin
),选中并删除。 - 点击 确定 保存。
2. 在 MSYS2 上卸载 MinGW-w64
如果在 MSYS2 中安装了 mingw-w64
,可以通过 pacman
命令来卸载:
-
打开 MSYS2 终端。
-
运行以下命令来卸载 64 位和 32 位的
mingw-w64
工具链:pacman -Rns mingw-w64-x86_64-gcc pacman -Rns mingw-w64-i686-gcc
-
也可以卸载整个
mingw-w64
相关的包:pacman -Rns $(pacman -Qq | grep "^mingw-w64-")
3. 在 macOS 或 Linux 上卸载 MinGW-w64
3.1 使用 Homebrew 卸载(macOS)
如果是通过 Homebrew 安装的 MinGW-w64,使用以下命令卸载:
brew uninstall mingw-w64
3.2 手动卸载(Linux)
如果在 Linux 系统上使用包管理器安装的 MinGW-w64,可以通过以下命令卸载:
-
Debian/Ubuntu:
sudo apt remove --purge mingw-w64
-
Fedora:
sudo dnf remove mingw32-gcc mingw64-gcc
-
Arch Linux:
sudo pacman -R mingw-w64-gcc
4. 检查是否已成功卸载
无论在哪个系统上,卸载完成后,可以通过以下命令检查 mingw
是否还存在:
which x86_64-w64-mingw32-gcc
如果返回 command not found
,则说明已经成功卸载。
七、资源
- MinGW 官方网站
- MinGW-w64 项目主页
- [MSYS2](