Minimalist GNU for Windows

Minimalist GNU for Windows

文章目录

    • [Minimalist GNU for Windows](#Minimalist GNU for Windows)
      • [一、MinGW 和 MinGW-w64 的安装](#一、MinGW 和 MinGW-w64 的安装)
        • [1. 在 Windows 上安装 MinGW-w64](#1. 在 Windows 上安装 MinGW-w64)
        • [2. 在 macOS 和 Linux 上安装 MinGW-w64](#2. 在 macOS 和 Linux 上安装 MinGW-w64)
      • [二、使用 MinGW-w64 编译代码](#二、使用 MinGW-w64 编译代码)
      • [三、MinGW 编译选项](#三、MinGW 编译选项)
      • [四、MinGW-w64 常用命令](#四、MinGW-w64 常用命令)
      • [五、MinGW 开发示例](#五、MinGW 开发示例)
      • 六、调试与优化
      • [七、 卸载 MinGW](#七、 卸载 MinGW)
        • 1、windows卸载
          • [1.1 使用 MinGW Installation Manager 卸载](#1.1 使用 MinGW Installation Manager 卸载)
          • [1.2 手动删除 MinGW 文件夹](#1.2 手动删除 MinGW 文件夹)
        • [2. 在 MSYS2 上卸载 MinGW-w64](#2. 在 MSYS2 上卸载 MinGW-w64)
        • [3. 在 macOS 或 Linux 上卸载 MinGW-w64](#3. 在 macOS 或 Linux 上卸载 MinGW-w64)
          • [3.1 使用 Homebrew 卸载(macOS)](#3.1 使用 Homebrew 卸载(macOS))
          • [3.2 手动卸载(Linux)](#3.2 手动卸载(Linux))
        • [4. 检查是否已成功卸载](#4. 检查是否已成功卸载)
      • 七、资源

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:

      bash 复制代码
      pacman -Syu
    • 关闭并重启 MSYS2 终端,然后运行:

      bash 复制代码
      pacman -Syu
    • 安装 mingw-w64 编译器:

      bash 复制代码
      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

    bash 复制代码
    brew install mingw-w64
  • Linux(以 Debian/Ubuntu 为例):

    bash 复制代码
    sudo apt update
    sudo apt install mingw-w64

二、使用 MinGW-w64 编译代码

  1. 编译简单的 C/C++ 程序

    创建一个 hello.c 文件:

    c 复制代码
    #include <stdio.h>
    
    int main() {
        printf("Hello, MinGW!\n");
        return 0;
    }

    使用 MinGW 编译:

    bash 复制代码
    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 应用的示例:

    bash 复制代码
    x86_64-w64-mingw32-gcc hello.c -o hello.exe
  4. 链接 Windows 库

    MinGW-w64 提供了一些 Windows 专有的库,可以使用 -l 参数进行链接。例如,要使用 wininet 库来访问 Windows 的网络 API:

    bash 复制代码
    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 文件:

    c 复制代码
    #include <windows.h>
    
    __declspec(dllexport) void hello() {
        MessageBox(NULL, "Hello from DLL!", "MinGW DLL", MB_OK);
    }

    编译生成 DLL:

    bash 复制代码
    x86_64-w64-mingw32-gcc -shared -o mydll.dll mydll.c -Wl,--out-implib,libmydll.a
  2. 在 C++ 中使用 Windows API

    cpp 复制代码
    #include <windows.h>
    #include <iostream>
    
    int main() {
        MessageBox(NULL, "Hello from MinGW-w64!", "Windows API", MB_OK);
        return 0;
    }

    使用 mingw-w64 编译:

    bash 复制代码
    x86_64-w64-mingw32-g++ myprogram.cpp -o myprogram.exe

六、调试与优化

  1. 启用调试信息

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

    bash 复制代码
    x86_64-w64-mingw32-gcc -g myprogram.c -o myprogram.exe
  2. 优化编译

    • -O2:大多数优化。
    • -O3:开启所有优化(可能增加编译时间)。
  3. 静态链接

    使用 -static 选项可以生成不依赖外部 DLL 的可执行文件:

    bash 复制代码
    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 工具链:

    bash 复制代码
    pacman -Rns mingw-w64-x86_64-gcc
    pacman -Rns mingw-w64-i686-gcc
  3. 也可以卸载整个 mingw-w64 相关的包:

    bash 复制代码
    pacman -Rns $(pacman -Qq | grep "^mingw-w64-")
3. 在 macOS 或 Linux 上卸载 MinGW-w64
3.1 使用 Homebrew 卸载(macOS)

如果是通过 Homebrew 安装的 MinGW-w64,使用以下命令卸载:

bash 复制代码
brew uninstall mingw-w64
3.2 手动卸载(Linux)

如果在 Linux 系统上使用包管理器安装的 MinGW-w64,可以通过以下命令卸载:

  • Debian/Ubuntu

    bash 复制代码
    sudo apt remove --purge mingw-w64
  • Fedora

    bash 复制代码
    sudo dnf remove mingw32-gcc mingw64-gcc
  • Arch Linux

    bash 复制代码
    sudo pacman -R mingw-w64-gcc
4. 检查是否已成功卸载

无论在哪个系统上,卸载完成后,可以通过以下命令检查 mingw 是否还存在:

bash 复制代码
which x86_64-w64-mingw32-gcc

如果返回 command not found,则说明已经成功卸载。

七、资源

相关推荐
也许,也会11 分钟前
PLC NCU1750与PLC1200s7通讯
运维·服务器
小韩博14 分钟前
Windows 权限提升(一)
windows
Hello.Reader1 小时前
一文吃透 Protobuf “Editions” 模式从概念、语法到迁移与实战
linux·服务器·网络·protobuf·editions
魔都吴所谓2 小时前
【Python】根据开始时间、结束时间计算中间时间
开发语言·windows·python
syty20203 小时前
flink 伪代码
java·windows·flink
IDOlaoluo4 小时前
TortoiseGit 2.4.0.0 64位安装教程(附详细步骤和Git配置 附安装包)
windows
知行力4 小时前
【GitHub每日速递】不止 TeamViewer 替代!RustDesk 与 PowerToys,Windows 效率神器
windows·github·teamviewer
wheeldown5 小时前
【Linux】Linux进程状态和僵尸进程:一篇看懂“进程在忙啥”
linux·运维·服务器·进程
半桔5 小时前
【Linux手册】动静态库:从原理到制作
linux·运维·服务器·动态库
z202305085 小时前
Linux之块设备的多队列的实现机制
linux·运维·服务器