相关资源打包下载:
看的肯定眼花缭乱了,简单把官网的内容给大家翻译介绍一下:
🌟 一、GCC 是什么?
GCC(GNU Compiler Collection) 是 GNU 提供的开源编译器套件,支持多种语言(如 C、C++、Fortran、Ada 等),最初是为 Linux 和类 Unix 系统开发的。
-
GCC 是一个“编译器前端 + 后端”的整体架构,可以输出不同平台的可执行文件。
-
GCC 是开源软件,在 Linux 上非常流行,编译器的“金标准”。
🌟 二、MinGW / MinGW-W64 是什么?
🧱 MinGW(Minimalist GNU for Windows)
-
是把 GCC 移植到 Windows 的一个项目,让你可以在 Windows 上使用 GCC 编译器来生成 原生 Windows 可执行程序(.exe)。
-
它使用 Windows 的 C Runtime(msvcrt.dll)而不是 POSIX。
-
功能有限,不再活跃维护。
🧱 MinGW-W64
-
是 MinGW 的增强版,由另一个团队开发,支持 64 位和 32 位 Windows 程序,还支持更多的 Windows API。
-
它集成了 GCC(Windows 版本)+ Windows API 头文件和库 + POSIX 兼容层(可选)。
-
现在主流都是用 MinGW-W64 来在 Windows 下用 GCC 开发。
📌 总结:MinGW-W64 = GCC for Windows + 更完整的 Windows 支持。
🌟 三、Cygwin 是什么?
Cygwin 是一个在 Windows 上模拟 Linux 环境的工具集。
-
它提供了一个 POSIX 兼容层 + Bash shell + Unix 工具(ls、cat、grep 等)。
-
它也包含一个移植到 Windows 的 GCC 编译器(带 POSIX 支持)。
-
用 Cygwin 编译出来的程序依赖一个叫
cygwin1.dll
的运行时。
📌 也就是说:
-
Cygwin 是更偏向于“把 Windows 变得像 Linux”,适合移植 Linux 工具。
-
编译出来的程序不是完全原生的 Windows 可执行文件(依赖 Cygwin DLL)。
🌟 四、LLVM-MinGW 是什么?
LLVM-MinGW 是基于 LLVM/Clang 的 MinGW 替代品。
-
和 MinGW-W64 一样,它用的是 MinGW-W64 的头文件和库,但后端编译器换成了 Clang(不是 GCC)。
-
生成的是 Windows 原生可执行文件(不依赖 Cygwin)。
-
更容易和一些现代工具链(比如 Visual Studio Code、Rust 等)集成。
📌 简单来说:
-
LLVM-MinGW = Clang 编译器 + MinGW-W64 提供的 Windows 头文件和库。
-
用于生成原生 Windows 程序,但不是用 GCC,而是 Clang。
✅ 总结对比
名称 | 编译器核心 | 是否生成原生 Windows 程序 | 是否依赖 DLL | 是否 POSIX 兼容 | 是否推荐使用 |
---|---|---|---|---|---|
GCC(原版) | GCC | 否(为 Linux 用) | 否 | 是(类 Unix) | Linux 上用 |
MinGW | GCC | 是(32位) | 否 | 否 | 不推荐 |
MinGW-W64 | GCC | ✅ 是(32/64位) | 否 | 否 | ✅ 推荐 |
Cygwin | GCC | 否(需 cygwin1.dll) | ✅ 是 | ✅ 是 | 特殊场合使用 |
LLVM-MinGW | Clang | ✅ 是 | 否 | 否 | 推荐(更现代) |
如果是 C++ 学习者或开发者,推荐选用 MinGW-W64 或 LLVM-MinGW 来在 Windows 下开发。
下载:
MinGW-w64:https://github.com/niXman/mingw-builds-binaries/releases
LLVM-MinGW:http://releases.llvm.org/download.html
MinGW-w64安装方法
1.点击下载,下载完成后,直接解压
关于某些特定名词是的解释
【1.基本名词解释】
15.1.0
是GCC的版本号;
目标操作系统和API风格
32
32位的操作系统,选择i686,64位的操作系统,选择x86_64;
posix
这是为类Unix系统(如Linux和macOS)设计的API风格。如果你的程序需要在这些系统上运行,或者你的代码依赖于POSIX API,你应该选择带有posix的工具链。
win32
这是为Windows系统设计的API风格。如果你的程序主要面向Windows用户,或者你的代码依赖于Windows特有的API,你应该选择带有win32的工具链。
【2.异常处理机制】
sjlj
表示这个工具链使用“Setjmp/Longjmp”异常处理机制。SJLJ是一种更传统的异常处理方式,它通常用于那些不支持或不完全支持Windows结构化异常处理(SEH)的操作系统。
seh
:表示这个工具链使用Windows的结构化异常处理(Structured Exception Handling, SEH)。SEH是Windows平台上常用的异常处理机制,它提供了更丰富的异常信息和更灵活的异常处理逻辑。如果你的代码需要与Windows平台的特性紧密集成,或者你的程序主要运行在Windows上,SEH可能是一个更好的选择。
【3.运行时库】
ucrt
是Universal C Runtime的缩写,它是Windows 10及更高版本中包含的一个新运行时库。它提供了与操作系统更紧密集成的API,并通常用于更现代的Windows应用程序。
如果你的目标平台是Windows 10或更高版本,并且你希望利用最新的API和功能,ucrt可能是一个好选择。
使用ucrt的库通常比使用msvcrt的库更小,因为它们不包含一些旧的、不再需要的API。
msvcrt
是Microsoft C Runtime的缩写,它是Microsoft提供的传统C运行时库。
它提供了广泛的API支持,包括一些旧的、可能不再常用的API。
如果你的代码依赖于msvcrt特有的API,或者你需要确保你的程序能在较旧的Windows版本上运行,msvcrt可能更适合你。
rt_v11
通常指的是“runtime”,即运行时库版本号。
【4.压缩格式】
.7z
这是文件的压缩格式。.7z是7-Zip
压缩工具使用的文件格式。它表示文件已经被压缩,以减小文件大小,方便下载和存储。要使用文件中的内容,用户通常需要使用7-Zip或其他兼容的压缩工具来解压缩文件。
2.设置系统变量MinGW_HOME
然后新建一个Path%MinGW_HOME%\bin
3.打开cmd,输入gcc -v
,如果提示这样,说明成功配置好环境了
mingw-w64编译64位程序
编译测试,随便找一个.c文件,然后输入gcc 文件名.c -o hello
,目录下就会生成一个程序,默认为64位
mingw-w64编译32位程序
然后C语言代码目录下执行gcc -m32 阶段101.c -o hello32
即可编译生成文件了
如果你想在这个版本生成64位程序,也可以,输入gcc -m64 阶段101.c -o hello64
即可
其他命令行拓展
1.常用命令基本解释
编译选项说明如下:
-m32表示编译32位程序,-m64表示编译64位程序。
-O2表示编译Release版,以最快执行速度优化;默认编译Debug版。
-o指定可执行文件名称
🔹 基本用法
gcc file.c -o output # 编译并生成可执行文件 output
🔹 编译控制
-c # 只编译生成 .o 文件,不链接
-o file # 指定输出文件名
-v # 显示详细编译信息
🔹 架构与平台
-m32 # 生成 32 位程序
-m64 # 生成 64 位程序(默认)
🔹 调试与优化
-g # 生成调试信息(gdb用)
-O0 # 无优化
-O1 # 一般优化
-O2 # 更强优化(推荐)
-O3 # 最大优化
🔹 预处理器相关
-E # 只运行预处理器,输出宏展开结果
-DMACRO=VALUE # 定义宏
-IMyInclude # 添加头文件搜索路径
🔹 链接控制
-Ldir # 指定库搜索目录
-lname # 链接库(libname.a / libname.dll)
-static # 静态链接(避免依赖 DLL)
-shared # 生成 DLL(.so/.dll)
🔹 警告与错误控制
-Wall # 打开所有常规警告
-Wextra # 更多警告
-Werror # 将警告当作错误处理
🔹 多文件编译
gcc a.c b.c -o output # 多文件一起编译
gcc -c a.c # 编译 a.c 为 a.o
gcc -c b.c # 编译 b.c 为 b.o
gcc a.o b.o -o output # 链接生成 output