You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitHub Actions Windows运行器中安装GCC和G++用于CI/CD编译?

在GitHub Actions Windows运行器上高效配置GCC/G++的方案建议

一、优化你的Chocolatey现有方案

你当前的Chocolatey配置有两个关键改进点:

  1. GitHub Actions的Windows运行器默认已预装Chocolatey,不需要手动安装,能省掉不少初始化时间
  2. setx设置的PATH不会在当前会话生效,导致后续的gcc --version会失败,应该用Chocolatey自带的refreshenv命令实时刷新环境变量

改进后的工作流片段

直接把setup.bat里的逻辑整合到GitHub Actions步骤中,去掉额外的脚本文件,更易维护:

- name: Install dependencies & Build binary
  working-directory: ./tool
  run: |
    python -m pip install --upgrade pip
    pip install -r requirements.txt
    # 安装MinGW(可选指定版本,避免版本波动)
    choco install mingw --version=12.2.0 -y
    # 刷新环境变量,让当前会话立刻找到gcc/g++
    refreshenv
    # 验证安装
    gcc --version
    g++ --version
    # 执行PyInstaller打包
    python -m PyInstaller `
      --collect-all z3        `
      --collect-all pyvex     `
      --collect-all angr      `
      --collect-all unicorn   `
      --collect-all cle       `
      --onefile --name capierre_binary src/__main__.py

这个优化后的方案保留了Chocolatey的简洁性,同时解决了PATH不生效的问题,完全自动化无手动干预。

二、MSYS2的高效配置方案

你觉得MSYS2步骤复杂,但通过官方GitHub Action可以大幅简化,而且它的兼容性更强(支持POSIX工具链,适合复杂C/C++项目),配合缓存也不会拖慢流水线。

配置示例

- name: Set up MSYS2
  uses: msys2/setup-msys2@v2
  with:
    msystem: MINGW64 # 选择64位MinGW环境
    update: true # 更新包数据库
    install: >-
      mingw-w64-x86_64-gcc
      mingw-w64-x86_64-g++
    cache: true # 缓存pacman包,加速后续流水线运行

# 可选:把MSYS2的GCC路径加到系统PATH,让后续步骤无需切换shell
- name: Add MSYS2 GCC to system PATH
  run: |
    echo "C:\msys64\mingw64\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append

- name: Verify GCC installation
  run: |
    gcc --version
    g++ --version

优势

  • 官方Action封装了所有复杂配置,一键完成环境搭建
  • 缓存机制能让后续运行的包安装时间大幅缩短
  • 支持更多编译工具(如make、autotools),适合需要POSIX环境的项目

三、两种方案对比

对比维度Chocolatey MinGWMSYS2
配置复杂度极低(一键安装)中等(依赖Action简化)
基础C/C++兼容性完全满足完全满足,且支持复杂场景
首次运行速度较快稍慢(需更新包库),缓存后接近
版本灵活性依赖Chocolatey包版本可精确指定每个包的版本
维护成本低中等(需了解MSYS2的环境概念)

四、最终建议

  • 如果你的项目只是基础C/C++编译+PyInstaller打包,优先用优化后的Chocolatey方案,配置最简单、速度最快,完全匹配你的需求。
  • 如果后续项目扩展需要POSIX工具链或复杂编译流程,再切换到MSYS2方案,配合官方Action和缓存,能保证流水线的高效运行。

内容的提问来源于stack exchange,提问作者Asile34

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.16 13:10:57