Minimalist GNU for Windows


MinGW(Minimalist GNU for Windows)是一组 GNU 工具,专门用于在 Windows 平台上编译 C、C++ 和 Fortran 等语言的代码。它提供了一个 Windows 版的 gcc 编译器,使开发者可以在 Windows 上使用 GNU 工具链进行开发。 mingw-w64MinGW 的扩展版,支持 64 位系统并提供更多功能。

一、MinGW 和 MinGW-w64 的安装

1. 在 Windows 上安装 MinGW-w64
  1. 通过 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位
      
    • 配置环境变量,使编译器可以在任意路径下使用。

  2. 通过 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 编译代码

  1. 编译简单的 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 上直接运行。

  2. 编译为 32 位或 64 位可执行文件

    • 使用 x86_64-w64-mingw32-gcc 编译 64 位程序。
    • 使用 i686-w64-mingw32-gcc 编译 32 位程序。
  3. 跨平台编译

    使用 mingw-w64 进行跨平台开发时,可以在 Linux 或 macOS 上生成 Windows 可执行文件。以下是在 Linux/macOS 上交叉编译 Windows 应用的示例:

    x86_64-w64-mingw32-gcc hello.c -o hello.exe
    
  4. 链接 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 开发示例

  1. 生成 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
    
  2. 在 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
    

六、调试与优化

  1. 启用调试信息
    使用 -g 选项生成调试信息:

    x86_64-w64-mingw32-gcc -g myprogram.c -o myprogram.exe
    
  2. 优化编译

    • -O2:大多数优化。
    • -O3:开启所有优化(可能增加编译时间)。
  3. 静态链接
    使用 -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,可以按以下步骤卸载:

  1. 打开 MinGW Installation Manager
  2. 在列表中找到已安装的 mingw32-base 或其他包,右键点击并选择 Mark for Removal
  3. 点击 Installation 菜单,选择 Apply Changes,开始卸载。
1.2 手动删除 MinGW 文件夹

如果是手动安装的 MinGW(未使用安装程序),可以直接删除 MinGW 安装文件夹。常见路径是 C:\MinGWC:\Program Files (x86)\MinGW

  1. 打开文件资源管理器,导航到 MinGW 的安装目录。
  2. 选中该文件夹并删除。
  3. 删除 MinGW 路径变量:
    • 打开 控制面板 > 系统和安全 > 系统 > 高级系统设置
    • 选择 环境变量
    • 系统变量 中找到 Path 变量,点击 编辑
    • 找到 MinGW 的路径(如 C:\MinGW\bin),选中并删除。
    • 点击 确定 保存。
2. 在 MSYS2 上卸载 MinGW-w64

如果在 MSYS2 中安装了 mingw-w64,可以通过 pacman 命令来卸载:

  1. 打开 MSYS2 终端。

  2. 运行以下命令来卸载 64 位和 32 位的 mingw-w64 工具链:

    pacman -Rns mingw-w64-x86_64-gcc
    pacman -Rns mingw-w64-i686-gcc
    
  3. 也可以卸载整个 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,则说明已经成功卸载。

七、资源

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部