sublime text 运行 c 程序必须安装 mingw 并配置 path,手动创建 .sublime-build 文件指定 gcc 路径和 -std=gnu11 等参数,且源文件路径、编码须为纯英文和 utf-8 无 bom。

Sublime Text 运行 C 程序必须装 MinGW,否则 gcc 命令根本找不到
Sublime Text 本身不带编译器,它只是个编辑器。你点“Build”却看到 sh: gcc: command not found 或 'gcc' is not recognized as an internal or external command,说明系统压根没装 MinGW,或者没加进 PATH。
实操建议:
- 去 MinGW-w64 官网 下 Windows x86_64 版(别下旧版 MinGW),解压到不含中文和空格的路径,比如
C:\mingw64 - 把
C:\mingw64\bin加进系统环境变量PATH(改完重启 Sublime) - 在命令行运行
gcc --version,能输出版本号才算成功
Sublime 的 C 构建系统要手动写 sublime-build 文件,不能靠插件自动配好
Package Control 里搜 “C Improved” 或 “C++11” 都只是语法高亮或 snippets,不解决编译问题。真正让 Ctrl+B 跑起来的,是自定义构建系统——一个 JSON 格式的 .sublime-build 文件。
实操建议:
- 菜单栏 → Tools → Build System → New Build System…
- 替换成以下内容(注意路径和参数):
{
"shell_cmd": "gcc -Wall -std=c11 \"${file}\" -o \"${file_path}/${file_base_name}\"",
"file_regex": "^(..[^:]*):([0-9]+):([0-9]+):? (.*)$",
"working_dir": "${file_path}",
"selector": "source.c",
"variants":
[
{
"name": "Run",
"shell_cmd": "gcc -Wall -std=c11 \"${file}\" -o \"${file_path}/${file_base_name}\" && \"${file_path}/${file_base_name}\""
}
]
}
保存为 C.sublime-build,然后在 Tools → Build System 里选它。
-std=c11 和 -std=gnu11 差在哪?Windows 下推荐用后者
MinGW 默认用 GNU 扩展,比如 __attribute__、typeof、内联汇编等。如果只写 -std=c11,遇到 error: unknown type name ‘uint32_t’ 就可能卡住——因为标准 C 不保证这些类型头文件被包含。
实操建议:
- 把构建命令里的
-std=c11换成-std=gnu11(或-std=gnu99) - 加
-I参数指定头文件路径(如-I"C:\mingw64\x86_64-w64-mingw32\include")一般不用,除非你用了非标准库 - 调试时加
-g,但发布前去掉,避免体积膨胀
中文路径或文件名会导致 gcc 编译失败,且错误信息不提示原因
这是 MinGW 在 Windows 下的老毛病:gcc 解析含中文的 ${file} 会乱码,报错像 fatal error: no input files 或直接静默退出。你查半天以为配置错了,其实只是路径有汉字。
实操建议:
- 所有 C 源文件必须放在纯英文路径下,例如
D:\code\hello.c,不是D:\我的代码\hello.c - Sublime 的项目文件夹(.sublime-project)也别放中文路径里
- 如果必须处理中文输入/输出,在代码里用
SetConsoleOutputCP(65001)+printfUTF-8 字符串,但源文件本身仍需 ANSI/UTF-8 无 BOM 编码











