Scoop 包管理器与 MinGW 工具链详解
📦 什么是 Scoop,Scoop的历史?
Scoop 是 Windows 平台上的命令行包管理器,类似于 Linux 的 apt、yum 或 macOS 的 Homebrew。它让 Windows 用户可以通过简单的命令行操作来安装、更新和管理软件。
Scoop 诞生于 2013 年左右,是 Windows 平台上一款"类 Homebrew"的命令行包管理器。
它的出现背景很简单:当时 Windows 用户想装开发工具得挨个去官网下载、手动改 PATH,既繁琐又容易把系统目录弄脏;而 Linux 有 apt/yum、macOS 有 Homebrew,Windows 却没有趁手的同类工具。作者 Luke Sampson 于是用 PowerShell 写了 Scoop,目标是"一条命令就把软件干净地装进用户目录,卸载时不留残渣"。
2013--2015 年:
- 项目放在 GitHub,早期只维护一个主 bucket(软件仓库),以开源/命令行小工具为主。
- 采用"portable 优先"策略:尽量下载压缩包,解压后把可执行文件软链到 /scoop/shims,避免写注册表、不写系统目录,因此无需管理员权限即可安装。
2016--2018 年:
- 社区开始大量贡献"bucket",出现 extras、versions、java、games 等独立仓库,软件数量从几百增长到几千。
- 引入自动更新机制(checkver + autoupdate 脚本),上游一发新版,官方仓库几小时内就能自动生成新 manifest。
- 国内用户群体扩大,知乎、CSDN 出现大量安装教程,"Windows 上的 Homebrew"这一口号被普遍接受。
2019--2020 年:
- 核心代码逐渐模块化,支持多架构(32/64 bit)、多语言运行环境(nodejs、python、ruby 等)。
- 微软官方推出 winget 预览版,外界曾担心 Scoop 会被"招安"或边缘化,但作者和核心维护者仍保持独立更新,继续走"用户空间、零权限、绿色安装"路线。
2021 年至今:
- 项目进入"半社区自治"状态:Luke Sampson 淡出日常维护,由 lukesampson/scoop 组织里几位核心成员合码、Review PR。
- 功能迭代放慢,没有官方路线图,但 bucket 生态继续膨胀,仅官方主仓库就超过 1 000 款软件,extras 仓库更达 4 000+。
- 国内镜像源、一键换源脚本、GUI 前端(如 ScoopGUI)相继出现,进一步降低了上手门槛。
一句话总结:
Scoop 从 2013 年个人 side-project 起步,凭借"不写系统目录、无需管理员、卸载干净"的差异化定位,在 Windows 包管理圈子里站稳了脚;虽然后来 winget 入局,但它仍以灵活、轻量、社区驱动的方式继续存活并迭代。
Scoop 的核心优势
- 自动化安装:一条命令完成下载、安装、配置
- 自动配置环境变量:无需手动设置 PATH
- 版本管理:轻松切换软件版本
- 干净卸载:卸载时自动清理相关文件
- 集中管理:所有软件统一管理,一目了然
安装 Scoop
powershell
# 1. 打开 PowerShell(以普通用户权限即可,不需要管理员)
# 2. 设置执行策略(如果遇到权限问题)
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser
# 3. 安装 Scoop
irm get.scoop.sh | iex
Scoop 常用命令
powershell
# 安装软件
scoop install <软件名>
# 卸载软件
scoop uninstall <软件名>
# 更新软件
scoop update <软件名>
# 更新所有软件
scoop update *
# 查看已安装软件
scoop list
# 搜索软件
scoop search <关键词>
# 查看软件信息
scoop info <软件名>
实际应用示例
使用 Scoop 安装开发工具链:
powershell
# 安装 MinGW(包含 GCC 编译器)
scoop install mingw
# 安装 CMake(构建系统生成器)
scoop install cmake
# 安装 Git(版本控制)
scoop install git
# 验证安装
gcc --version
cmake --version
git --version
🔧 MinGW、GCC 和 Makefile 的关系
基本概念
GCC (GNU Compiler Collection)
- 定义:GNU 编译器集合,包含 C、C++、Fortran 等多种语言的编译器
- 作用:将源代码编译成可执行文件或目标文件
- 平台:主要在 Linux/Unix 系统上使用
MinGW (Minimalist GNU for Windows)
- 定义:Windows 平台上的 GCC 移植版本
- 作用:在 Windows 上提供 GCC 工具链
- 包含 :
gcc.exe- C 编译器g++.exe- C++ 编译器make.exe- 构建工具ar.exe- 归档工具ld.exe- 链接器- 其他开发工具
Makefile
- 定义:构建脚本文件,定义了项目的编译规则和依赖关系
- 作用 :告诉
make工具如何编译和链接项目 - 格式:使用 Makefile 语法编写
三者关系图解
┌─────────────────────────────────────────────────┐
│ 源代码文件 (.cpp, .c) │
└───────────────────┬─────────────────────────────┘
│
▼
┌───────────────────────┐
│ Makefile │
│ (构建规则文件) │
└───────────┬─────────────┘
│
▼
┌───────────────────────┐
│ make.exe │
│ (来自 MinGW) │
│ 读取 Makefile │
└───────────┬─────────────┘
│
▼
┌───────────────────────┐
│ gcc/g++.exe │
│ (来自 MinGW) │
│ 编译源代码 │
└───────────┬─────────────┘
│
▼
┌───────────────────────┐
│ 目标文件 (.o) │
└───────────┬─────────────┘
│
▼
┌───────────────────────┐
│ gcc/g++.exe │
│ (链接器) │
│ 链接目标文件 │
└───────────┬─────────────┘
│
▼
┌───────────────────────┐
│ 可执行文件 (.exe) │
└───────────────────────┘
详细工作流程
1. 编写源代码
cpp
// main.cpp
#include <iostream>
int main() {
std::cout << "Hello, World!" << std::endl;
return 0;
}
2. 创建 Makefile
makefile
# Makefile
main.exe: main.cpp
g++ main.cpp -o main.exe
clean:
del main.exe
3. 执行构建
bash
# make.exe(来自 MinGW)读取 Makefile
make
# make 发现需要 main.exe,依赖 main.cpp
# 执行命令:g++.exe main.cpp -o main.exe
# g++.exe(来自 MinGW)编译并生成 main.exe
4. 运行程序
bash
.\main.exe
# 输出:Hello, World!
关系总结
| 组件 | 角色 | 作用 |
|---|---|---|
| MinGW | 工具链集合 | 提供 Windows 上的 GCC 工具(gcc、g++、make 等) |
| GCC/G++ | 编译器 | 将源代码编译成目标文件,链接成可执行文件 |
| Makefile | 构建脚本 | 定义编译规则,告诉 make 如何调用编译器 |
| make | 构建工具 | 读取 Makefile,执行编译命令 |
实际开发中的完整流程
使用 CMake + MinGW 的典型流程
bash
# 1. CMake 读取 CMakeLists.txt,生成 Makefile
cmake ..
# 2. make(来自 MinGW)读取生成的 Makefile
make
# 3. g++(来自 MinGW)编译源代码
# (make 内部调用 g++)
# 4. 生成可执行文件
.\hello.exe
CMakeLists.txt 示例
cmake
cmake_minimum_required(VERSION 3.10)
project(HelloCMake LANGUAGES CXX)
add_executable(hello main.cpp)
CMake 生成的 Makefile(简化版)
makefile
# CMake 自动生成的 Makefile(简化示例)
hello.exe: main.cpp
g++ main.cpp -o hello.exe
🚀 完整安装和使用指南
第一步:安装 Scoop
powershell
# 在 PowerShell 中执行
irm get.scoop.sh | iex
第二步:使用 Scoop 安装 MinGW
powershell
# 安装 MinGW(包含 gcc、g++、make)
scoop install mingw
第三步:验证安装
powershell
# 检查 GCC
gcc --version
# 输出示例:gcc (MinGW.org GCC-8.2.0-5) 8.2.0
# 检查 G++
g++ --version
# 输出示例:g++ (MinGW.org GCC-8.2.0-5) 8.2.0
# 检查 Make
make --version
# 输出示例:GNU Make 4.2.1
第四步:创建测试项目
bash
# 创建项目目录
mkdir test-project
cd test-project
# 创建源代码
echo '#include <iostream>
int main() {
std::cout << "Hello from MinGW!" << std::endl;
return 0;
}' > main.cpp
# 创建 Makefile
echo 'main.exe: main.cpp
g++ main.cpp -o main.exe
clean:
del main.exe' > Makefile
# 编译
make
# 运行
.\main.exe
📚 扩展阅读
Scoop 有哪些值得安装的软件
下面这份清单把"装完就能显著提升效率、且几乎不会踩坑"的软件按场景分好类,全部来自 Scoop 现成仓库,复制命令即可一键安装。排名不分先后,但都是各品类里"用过就回不去"的口碑款。
- 终端 & 命令行基础设施
git-- 版本控制,必装sudo-- Windows 里临时提权,再也不用"以管理员身份运行"7zip/unzip-- 压缩/解压全格式,体积小巧curl/wget-- 下载、调试接口busybox-- 100+ Linux 常用命令一次性补齐vim/nano-- 随手改配置文件
- 开发环境一条龙
vscode-- 宇宙级编辑器,插件生态无敌nodejs/python/go/rust-- 语言全家桶,自动配 PATHjdk17/maven/gradle-- Java 后端三件套cmake/gcc-- C/C++ 编译链docker-cli-- 本地镜像/容器操作,配合 Docker Desktop 更香
- 文件与系统管理
everything-- 秒搜全盘文件名,体积不到 2 MBsnipaste-- 贴图+标注神器,截图党必备lockhunter-- 解锁被占用的文件/文件夹winscp-- SFTP/FTP 图形客户端beyondcompare-- 文件/文件夹差异对比,合并利器syncthing-- 开源跨设备同步,无云也能秒同步
- 日常办公 & 写作
typora-- Markdown 实时预览,写作体验天花板notepadplusplus-- 轻量文本/代码编辑器foxit-pdf/sumatrapdf-- 极速 PDF 阅读器wpsoffice-- 免费办公三件套xmind-- 思维导图,会议整理神器
- 媒体与娱乐
potplayer-- 最强本地播放器,解码格式全覆盖obs-studio-- 直播/录屏/推流一站式imageglass-- 开源看图工具,秒开大图ffmpeg-- 音视频转码、提取、压缩命令行全能王
- 网络 & 安全小工具
wireshark-- 抓包排障,网络工程师标配nmap-- 端口扫描、资产发现postman-- API 调试、Mock 服务keepass/bitwarden-cli-- 密码库本地+云双保险
- 字体与美化
FiraCode-NF/JetBrainsMono-NF-- 连字+图标一体化,终端/Vim 颜值翻倍mactype-- 让 Win10/11 字体渲染瞬间"苹果化"
- 极客向 Bonus(按需)
powertoys-- 官方效率套装(批量重命名、窗口置顶、颜色选择器等)processhacker-- 比任务管理器更强大的进程/服务查看器dnspy-- .NET 反编译调试sysinternals-- 微软官方 70+ 系统级工具合集
一条命令全装示例(按需要自行删减)
powershell
scoop install sudo 7zip git curl vim everything vscode nodejs python jdk17 maven typora potplayer snipaste notepadplusplus imageglass ffmpeg keepass foxit-pdf FiraCode-NF
以上软件均收录在
main/extras/nerd-fonts等官方维护仓库,更新及时、卸载干净,可放心食用。
MinGW vs MSVC
| 特性 | MinGW (GCC) | MSVC |
|---|---|---|
| 平台 | Windows | Windows |
| 许可证 | GPL/LGPL | 专有 |
| 标准支持 | 最新 C++ 标准 | 最新 C++ 标准 |
| 跨平台 | 是(Linux/Mac 也用 GCC) | 否 |
| 性能 | 优秀 | 优秀 |
为什么选择 MinGW?
- 跨平台一致性:Linux/Mac 也用 GCC,代码更容易移植
- 开源免费:完全免费,无授权问题
- 标准支持:对 C++ 标准支持及时
- 工具丰富:GDB 调试器、Valgrind 等工具支持
其他相关工具
- CMake:构建系统生成器,可以生成 Makefile
- Ninja:更快的构建系统,CMake 也可以生成 Ninja 文件
- GDB:GNU 调试器,用于调试程序
- Clang:另一个优秀的 C++ 编译器
🎯 总结
- Scoop 是 Windows 上的包管理器,让软件安装变得简单
- MinGW 是 Windows 上的 GCC 工具链,提供编译器和构建工具
- GCC/G++ 是编译器,负责将源代码编译成可执行文件
- Makefile 是构建脚本,定义编译规则
- make 是构建工具,读取 Makefile 并执行编译命令
它们的关系是:
- MinGW 提供工具(gcc、g++、make)
- Makefile 定义规则
- make 执行规则
- gcc/g++ 执行编译
使用 Scoop 安装 MinGW 是最简单的方式,一条命令就能完成安装和配置!