Windows 下 GCC 编译器安装与排错实录

Windows 下 GCC 编译器安装与排错实录

记录一次从源码编译 Ollama 时遇到的 CGO 编译器缺失问题,以及完整的 MSYS2 GCC 安装排错过程。




问题背景

在 Windows 环境下尝试从源码编译运行 Ollama 时,遇到了经典的 CGO 编译器缺失错误:

复制代码
(.venv) J:\PythonProjects4\ollama>go run . serve
# runtime/cgo
cgo: C compiler "gcc" not found: exec: "gcc": executable file not found in %PATH%

这个错误表明系统缺少 GCC 编译器,而 Ollama 依赖的某些组件需要通过 CGO 调用 C 代码进行编译。




解决方案选择

Windows 下安装 GCC 有多种途径:

方案 优点 缺点
MSYS2 包管理完善,更新及时 安装包较大
MinGW-w64 独立版 轻量级,配置简单 版本较旧,手动更新麻烦
Cygwin 功能全面 过于笨重,不适合仅需要 GCC 的场景
WSL Linux 环境完整 需要虚拟化,与 Windows 原生开发工具链集成稍麻烦

最终选择:MSYS2 ------ 因为它提供了完整的 MinGW-w64 工具链,并且可以通过 pacman 方便地管理软件包。




安装过程

第一步:安装 MSYS2 基础系统

  1. MSYS2 官网 下载安装程序

  2. 运行安装向导,选择安装路径(本例安装在 D:\msys64

  3. 安装完成后,在开始菜单中找到 "MSYS2 MSYS""MSYS2 MinGW 64-bit",以管理员身份运行



第二步:更新包数据库

复制代码
pacman -Syu

⚠️ 如果提示关闭终端,请关闭后重新打开,再次运行 pacman -Su 完成更新。

第三步:安装 GCC 工具链

复制代码
pacman -S mingw-w64-x86_64-gcc mingw-w64-x86_64-toolchain

这里遇到了第一个坑:依赖冲突

复制代码
:: There are 13 members in group mingw-w64-x86_64-toolchain:
...
error: failed to prepare transaction (could not satisfy dependencies)
:: installing mingw-w64-x86_64-gcc-libs (15.2.0-11) breaks dependency 
   'mingw-w64-x86_64-gcc-libs=15.2.0-8' required by mingw-w64-x86_64-gcc-libgfortran

原因分析 :系统中已存在 -git 版本的开发包,与要安装的稳定版本冲突。


排错过程

尝试一:强制刷新包数据库

复制代码
pacman -Syyu

执行后系统更新了 200 个软件包,但再次安装 GCC 时仍然提示冲突。


尝试二:选择性安装

在提示选择安装组件时,只选择第 3 项(mingw-w64-x86_64-gcc):

Enter a selection (default=all): 3

这次安装成功了!但只安装了 GCC 核心,没有完整的工具链。

验证安装

复制代码
$ gcc --version
gcc.exe (Rev11, Built by MSYS2 project) 15.2.0
Copyright (C) 2025 Free Software Foundation, Inc.

GCC 已可用,但还需要确认路径。

发现第二个坑:路径不一致

复制代码
$ where gcc.exe
D:\msys64\mingw64\bin\gcc.exe

注意 :MSYS2 安装在 D 盘,而非默认的 C 盘!




配置 Windows 环境变量

为了让 GCC 在 Windows 原生的 CMD/PowerShell 中可用,需要将路径添加到系统 PATH

D:\msys64\mingw64\bin

添加步骤

  1. Win + R → 输入 sysdm.cpl → 回车

  2. "高级" → "环境变量"

  3. "系统变量" 中找到 Path → "编辑"

  4. "新建" → 输入 D:\msys64\mingw64\bin

  5. 确定保存

验证(重新打开 CMD):

复制代码
C:\Users\love>where gcc
D:\msys64\mingw64\bin\gcc.exe

C:\Users\love>gcc --version
gcc (Rev11, Built by MSYS2 project) 15.2.0
Copyright (C) 2025 Free Software Foundation, Inc.


最终验证

回到 Ollama 项目目录:

复制代码
cd J:\PythonProjects4\ollama
go run . serve

服务成功启动,CGO 编译器问题彻底解决!




经验总结

  1. MSYS2 安装 GCC 不是一键完成的 ------ 基础系统安装后,需要通过 pacman 单独安装工具链

  2. 注意依赖冲突 ------ -git 版本和稳定版本混用会导致冲突,必要时先卸载冲突包

  3. 路径确认很重要 ------ MSYS2 可能安装在非 C 盘位置,添加到 PATH 时要确认实际路径

  4. 环境变量生效需要重启终端 ------ 修改 PATH 后必须重新打开 CMD/PowerShell




常用命令备忘

复制代码
# 强制刷新包数据库
pacman -Syyu

# 更新 MSYS2 系统
pacman -Syu

# 安装 GCC 工具链
pacman -S mingw-w64-x86_64-toolchain

# 查询已安装包
pacman -Q | grep gcc

# 移除包
pacman -R <package-name>

# 清理包缓存
pacman -Sc

参考环境

  • Windows 10/11

  • MSYS2 (安装在 D:\msys64)

  • GCC 15.2.0 (Rev11)

  • Go 1.22+


参考文献

【笔记】在 MSYS2(MINGW64)中安装 Python 和 pip 并正确使用指南
【笔记】在 MSYS2(MINGW64)中正确安装 Poetry 的指南
【笔记】基于 MSYS2(MINGW64)的 Poetry 虚拟环境创建指南

【笔记】在 MSYS2(MINGW64)中正确安装 Rust
【笔记】在 MSYS2(MINGW64)中安装 Python 工具链的记录
【笔记】在 MSYS2(MINGW64)中安装 python-maturin 的记录
【笔记】MSYS2 安装 Python 构建依赖记录Cython + Ninja + Meson + meson-python
【笔记】在 MSYS2 MINGW64 环境中降级 NumPy 2.2.6 到 2.2.4
【笔记】如何卸载 MSYS2 中不同工具链的 numpy 包
【笔记】在 MSYS2 MINGW64 环境中安装常用开发依赖包
【笔记】在 MSYS2 MINGW64 环境中安装构建工具链(CMake、GCC、Make)
【笔记】Windows系统部署suna基于 MSYS2的Poetry 虚拟环境backedn后端包编译失败处理
【笔记】MSYS2 的 MINGW64 环境 全面工具链
【技术笔记】AI Agent 项目 SUNA 部署:MSYS2 环境中 Python 版本从 3.12 降级至 3.11 的实操指南
AI Agent 项目 SUNA 部署环境搭建 - 基于 MSYS2 的 Poetry+Python3.11 虚拟环境
【笔记】解决MSYS2安装后cargo-install-update.exe-System Error
【笔记】旧版MSYS2 环境中 Rust 升级问题及解决过程
MSYS2+Rust+Poetry安装tokenizers失败的排查与解决LINK : fatal error LNK1181: cannot open file "python3.lib"
【技术笔记】MSYS2 指定 Python 版本安装方案
MSYS2 环境配置与 Python 项目依赖管理笔记
【笔记】MSYS2 的 MinGW64 环境中正确安装 Python 相关环境管理工具 (Poetry、Virtualenv、Pipenv 和 UV)
MSYS2 环境下 Python 开发配置(结合 PyCharm)使用笔记
【笔记】离个大谱!彻底解决Windows系统部署开源AI Agent项目SUNA的Frontend前端安装GTK库的问题
【AI Agent 项目 SUNA 部署】Windows 全版本 GTK 兼容与部署最佳实践(兼顾 Frontend 前端 和 Backend 后端 顺利部署)

相关推荐
倔强的石头1066 小时前
归纳偏好 —— 机器学习的 “择偶标准”
人工智能·机器学习
zhangshuang-peta6 小时前
通过MCP实现安全的多渠道人工智能集成
人工智能·ai agent·mcp·peta
听麟6 小时前
HarmonyOS 6.0+ APP AR文旅导览系统开发实战:空间定位与文物交互落地
人工智能·深度学习·华为·ar·wpf·harmonyos
AI_56786 小时前
阿里云OSS成本优化:生命周期规则+分层存储省70%
运维·数据库·人工智能·ai
龙山云仓6 小时前
MES系统超融合架构
大数据·数据库·人工智能·sql·机器学习·架构·全文检索
zxsz_com_cn6 小时前
设备预测性维护指的是什么 设备预测性维护传感器的作用
人工智能
可编程芯片开发6 小时前
基于PSO粒子群优化PI控制器的无刷直流电机最优控制系统simulink建模与仿真
人工智能·算法·simulink·pso·pi控制器·pso-pi
迎仔6 小时前
02-AI常见名词通俗解释
人工智能
猫头虎6 小时前
OpenClaw开源汉化发行版:介绍、下载、安装、配置教程
运维·windows·开源·aigc·ai编程·agi·csdn