Skip to content

Windows 环境配置 ​

已经配置过?

环境只需要配置一次,之后安装新版本的 cpro 不用再配。已经配置过的话,直接跑一遍 自检 确认即可。

为什么要配置 ​

cpro 自带 LLVM,从源码到目标文件这一整段由它自己完成。缺的只有最后一步:链接——把目标文件和系统库拼成 .exe。这一步 cpro 调用 mingw-w64 的 gcc 来完成,所以需要装一份 mingw-w64 工具链。

必须是 UCRT 版

mingw-w64 有 UCRT 和 msvcrt 两种版本,cpro 要求 UCRT 版。装错了不会报错,但程序的部分输出会丢失或乱序。按下面的步骤用 MSYS2 安装就不会出错。

1. 安装 MSYS2 ​

从 https://www.msys2.org 下载安装器,一路默认,装到 C:\msys64。

中国大陆用户从官网下载可能很慢,可以从镜像站下载同一个安装器(选文件名形如 msys2-x86_64-<日期>.exe 的最新一个):

2. 换国内镜像(中国大陆用户) ​

从开始菜单打开 「MSYS2 UCRT64」,执行:

bash
sed -i "s#https\?://mirror.msys2.org/#https://mirrors.tuna.tsinghua.edu.cn/msys2/#g" /etc/pacman.d/mirrorlist*
pacman -Syu

pacman -Syu 第一次运行可能提示关闭窗口后重新打开再运行一次,照做即可。

3. 安装工具链 ​

仍在 「MSYS2 UCRT64」 窗口里执行:

bash
pacman -S mingw-w64-ucrt-x86_64-gcc

如果要用标准库的 http 模块,再装 libcurl:

bash
pacman -S mingw-w64-ucrt-x86_64-curl

注意窗口

开始菜单里有好几个 MSYS2 快捷方式,必须用「MSYS2 UCRT64」。「MSYS2 MINGW64」装出来的是 msvcrt 版。

4. 加入 PATH ​

把下面这个目录加入系统环境变量 Path:

C:\msys64\ucrt64\bin

设置方法:设置 → 系统 → 系统信息 → 高级系统设置 → 环境变量 → 编辑 Path → 新建。

它必须排在其他含 gcc.exe、clang.exe、cc.exe 的目录前面,可以用「上移」按钮调整。常见的会抢在前面的目录:

目录里面可能有
C:\Program Files\LLVM\binclang.exe
C:\Program Files\mingw64\bin、C:\mingw64\bingcc.exe
C:\msys64\mingw64\bingcc.exe(msvcrt 版)

不要把 C:\msys64\usr\bin 加进 Path,它会顶掉 Windows 自带的 find、sort 等命令。

cpro 自己的目录在安装时已经加入 Path(安装界面里的"添加到系统 PATH",默认勾选)。

自检 ​

重新打开 cmd 或 PowerShell(已打开的窗口看不到 Path 的变化),运行:

powershell
cpro-26.10.1 jiancha

jiancha 的英文别名是 doctor。它会依次检查编译器文件、链接器、C 运行时,并试编译运行一个小程序。环境正常时输出类似:

cpro 26.10.1 环境自检(windows-x86_64)
  编译器: C:\Program Files\cpro\26.10.1\cpro-26.10.1.exe

  [通过] 编译器文件
  [通过] 链接驱动
         使用: C:\msys64\ucrt64\bin\cc.exe
  [通过] C 运行时
         UCRT
  [通过] 试编译运行
  [通过] libcurl(可选,http 模块要用)

结论: 环境正常

有失败项时,它会给出修复建议。libcurl 一项没装只显示"未装",不算失败。

常见问题 ​

报错「找不到 C 编译器(cc/clang/gcc),无法链接」

Path 里没有工具链。检查第 4 步是否完成,改完后是否重新打开了终端。VS Code 等编辑器的内置终端需要重启整个编辑器。

链接报一堆 undefined reference,符号名里带 _imp

用到了别的 clang.exe(比如 Windows 版 LLVM 自带的)。按第 4 步调整 Path 顺序,让 C:\msys64\ucrt64\bin 排在前面。

程序能编译能运行,但 print 的输出丢失或乱序

链接时用到了 msvcrt 版的 gcc。运行 cpro-26.10.1 jiancha,看「C 运行时」一项是不是 UCRT,再按第 4 步检查 Path 顺序。

pacman -S 很慢或反复下载失败

没有换国内镜像,或者没有生效。回到第 2 步重做一遍。

报错找不到 std 或 libcpro_rt.a

cpro 的安装目录不完整,重新运行安装包即可。见 多版本管理。

cpro 目前处于测试阶段