MSYS2的C/C++,python2,python3编译环境安装脚本

1. 介绍

该脚本是一款针对 MSYS2 MinGW 64-bit 环境 的一键部署脚本,核心目标是快速搭建包含 C/C++ 编译环境、Python2Python3 及相关依赖工具的开发环境,全程自动化执行,无需手动干预。

2. 注意事项

网络要求: 执行前需保证网络通畅,脚本依赖网络下载系统包和 Python2 离线包;
权限要求: 需以足够权限运行(如 MSYS2 终端默认权限),避免文件读写 / 安装失败;
环境唯一性: 仅适用于 MSYS2 MinGW 64-bit,32 位或其他 Linux 子系统(如 WSL)不兼容;
Python2 版本: 固定为 2.7.18,是 Python2 的最终稳定版,满足老旧项目的兼容需求。
系统更新: 如果经常更新系统基础包,请注意使用安装脚本里的 pacman -Syu --ignore=mingw-w64-x86_64-python2 --noconfirm 该条命令进行更新,防止 Python2 其被系统更新删除。

如果想下载其他包,各位可自行在 MSYS2 的源中进行查找,或者换成自行替换为其他的镜像源,我在为各位提供了 MSYS2 的源的下来链接,可以自己点击 CTRL+F 进行网页搜索,可能因为 MSYS2 资源网站资源有点多所以会有些卡顿

3. 安装脚本

该脚本只需要运行 MSYS2 MINGW64 创建一个脚本,运行即可

shell 复制代码
#!/bin/bash
# MSYS2 一键部署脚本
# 功能:安装 C/C++ 编译环境、Python2、Python3 及所有依赖工具
# 适用环境:MSYS2 MinGW 64-bit
# 注意:执行前请确保网络正常,脚本会自动下载并安装所有包

# 遇到错误立即退出脚本,保证执行安全
set -e

# 清屏优化输出
clear

# ==============================================
# 阶段 1:更新系统(不升级 Python2,避免被删除)
# ==============================================
echo "============================================="
echo " 正在更新系统基础包..."
echo "============================================="
pacman -Syu --ignore=mingw-w64-x86_64-python2 --noconfirm

# ==============================================
# 阶段 2:安装 C/C++ 编译工具链
# ==============================================
echo -e "\n============================================="
echo " 正在安装 C/C++ 开发工具(gcc/gdb/make/cmake)"
echo "============================================="
pacman -S --noconfirm \
mingw-w64-x86_64-gcc \
mingw-w64-x86_64-gdb \
mingw-w64-x86_64-make \
mingw-w64-x86_64-cmake \
mingw-w64-x86_64-binutils \
base-devel

echo " 准备 Windows 使用的 make 工具"
cp /mingw64/bin/mingw32-make.exe /mingw64/bin/make.exe

# ==============================================
# 阶段 3:安装 Python3 环境
# ==============================================
echo -e "\n============================================="
echo " 正在安装 Python3 环境"
echo "============================================="
pacman -S --noconfirm \
mingw-w64-x86_64-python \
mingw-w64-x86_64-python-pip \
mingw-w64-x86_64-python-setuptools \
mingw-w64-x86_64-python-wheel

# ==============================================
# 阶段 4:下载 Python2 全套离线包
# ==============================================
echo -e "\n============================================="
echo " 正在下载 Python2.7.18 相关包"
echo "============================================="
cd ~

wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python2-2.7.18-8-any.pkg.tar.zst
wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python2-pip-20.3.4-1-any.pkg.tar.zst
wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python2-setuptools-44.1.1-2-any.pkg.tar.zst
wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python2-cairo-1.18.2-4-any.pkg.tar.zst
wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python2-gobject-3.34.0-4-any.pkg.tar.xz
wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-pygobject2-devel-2.28.7-5-any.pkg.tar.zst
wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python2-gobject2-2.28.7-5-any.pkg.tar.zst
wget https://repo.msys2.org/mingw/mingw64/mingw-w64-x86_64-python2-pygtk-2.24.0-8-any.pkg.tar.zst

# ==============================================
# 阶段 5:安装 Python2 及 GUI 依赖
# ==============================================
echo -e "\n============================================="
echo " 正在安装 Python2 及 GUI 组件"
echo "============================================="
pacman -U --noconfirm \
mingw-w64-x86_64-python2-*.pkg.tar.zst \
mingw-w64-x86_64-python2-*.pkg.tar.xz \
mingw-w64-x86_64-pygobject2-devel-*.pkg.tar.zst

# ==============================================
# 阶段 6:清理安装包,释放空间
# ==============================================
echo -e "\n============================================="
echo " 清理安装包文件"
echo "============================================="
rm -f ~/*.pkg.tar.zst ~/*.pkg.tar.xz

# ==============================================
# 阶段 7:锁定 Python2,防止系统更新删除
# ==============================================
echo -e "\n============================================="
echo " 锁定 Python2 包,防止被更新卸载"
echo "============================================="
sed -i '/^IgnorePkg/ s/$/ mingw-w64-x86_64-python2/' /etc/pacman.conf

# ==============================================
# 阶段 8:输出版本信息,验证安装结果
# ==============================================
echo -e "\n============================================="
echo " 安装完成!当前环境版本信息"
echo "============================================="

echo -e "\n--- C/C++ 工具 ---"
gcc --version | head -n 1
make --version | head -n 1

echo -e "\n--- Python 版本 ---"
python2 --version
python3 --version

echo -e "\n--- PIP 版本 ---"
pip2 --version | head -n 1
pip3 --version | head -n 1

echo -e "\n============================================="
echo " ✅ 所有环境部署成功!"
echo "============================================="
相关推荐
Vect__2 小时前
std::bind和lambda的使用
c++
爱编码的小八嘎2 小时前
C语言完美演绎6-1
c语言
发疯幼稚鬼3 小时前
大整数乘法运算
c语言·算法
励志的小陈3 小时前
数据结构Stack(C语言--用数组实现栈)
c语言·数据结构
宵时待雨3 小时前
C++笔记归纳17:哈希
数据结构·c++·笔记·算法·哈希算法
charlie1145141913 小时前
嵌入式C++教程实战之Linux下的单片机编程:从零搭建 STM32 开发工具链(2) —— HAL 库获取、启动文件坑位与目录搭建
linux·开发语言·c++·stm32·单片机·学习·嵌入式
问好眼3 小时前
《算法竞赛进阶指南》0x05 排序-1.电影
c++·算法·排序·信息学奥赛
CoderCodingNo3 小时前
【GESP】C++八级考试大纲知识点梳理 (6) 图论算法:最小生成树与最短路
c++·算法·图论
.YM.Z4 小时前
C++入门——缺省参数,函数重载,引用,inline函数,nullptr的介绍和使用
开发语言·c++