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 后端 顺利部署)

相关推荐
chushiyunen几秒前
python中的内置属性 todo
开发语言·javascript·python
2301_793804694 分钟前
Python数据库操作:SQLAlchemy ORM指南
jvm·数据库·python
余俊晖10 分钟前
多模态大模型后训练强化学习训练方法:Shuffle-R1
人工智能·自然语言处理·多模态
Hommy8811 分钟前
【开源剪映小助手】IPC 通信机制
python·开源·aigc·剪映小助手
黄焖鸡能干四碗21 分钟前
网络安全建设实施方案(Word文件参考下载)
大数据·网络·人工智能·安全·web安全·制造
未来之窗软件服务33 分钟前
为何模型越强、幻觉越大、工业越弱[AI人工智能(六十二)]—东方仙盟
人工智能·仙盟创梦ide·东方仙盟
云上的云端1 小时前
vLLM-Ascend operator torchvision::nms does not exist 问题解决
人工智能·pytorch·深度学习
szxinmai主板定制专家1 小时前
基于ZYNQ MPSOC船舶数据采集仪器设计(一)总体设计方案,包括振动、压力、温度、流量等参数
arm开发·人工智能·嵌入式硬件·fpga开发
Westward-sun.1 小时前
CNN 核心知识点详解:从图像基础到卷积与池化
人工智能·计算机视觉·cnn
Zhansiqi1 小时前
dayy43
pytorch·python·深度学习