在 VS Code 里写 C/C++:Windows + WSL2 双环境搭建指南 发布时间:2026/6/25 14:22:52 在 Windows 上写 C/C大多数刚刚开始接触计算机的学生或者是平时不咋写c/cpp的人的第一反应是装个 Dev-C 或者 Visual Studiovs2022可能很多初接触计算机的大学生会在网上看到推荐不过现在可能都是vs 2026了哈哈dev-c更是经典各种算法比赛的指定编译器和大一初次接触c语言学校电脑装的编译器但如果你写的代码涉及fork()、pthread_create()这类 POSIX 接口Windows 原生编译器是编译不过的——这些是 Linux 系统调用Windows 根本没有对应的实现。反过来如果你只装了 WSL 里的 GCC写 Windows APIwindows.h、CreateProcess也跑不起来。比较高效的做法是Windows 侧装 MinGW GCC 处理原生代码WSL2 侧装 GCC 处理 POSIX 代码VS Code 作为统一编辑器两边都能编译调试。这篇文章记录从零开始搭建这套环境的完整路径以及过程中容易搞混的几个概念。动手之前要理清的几个概念POSIX 和 Windows 是两套体系POSIX 是一套 Unix/Linux 系统 API 标准。fork()创建进程、pthread管理线程、semaphore.h做同步、sys/ipc.h做进程间通信——这些接口只存在于 Linux/Unix 系统中。Windows 有自己的一套CreateProcess创建进程、CreateThread创建线程、CreateSemaphore做同步。两套代码不能交叉编译。写 POSIX 代码必须有 Linux 编译环境写 Windows API 代码必须有 Windows 编译器。Dev-C 的局限Dev-C 内置的编译器是 MinGW GCC能编译标准 C/C 和 Windows API 代码。但它不带 POSIX 头文件pthread.h、sys/ipc.h这些会直接报找不到。如果你只写 Windows 侧的代码Dev-C 够用如果还要写 POSIX 代码它解决不了问题。EasyX 是什么EasyX 是一个 Windows 图形库封装了initgraph()、circle()、setfillcolor()这些函数让 C 程序能画窗口、画图形。它主要在国内高校教学中使用是对 Turbo C 时代graphics.h的现代替代。EasyX 只支持 Visual Studio 和 Dev-C不支持 MinGW 命令行编译。如果你的项目不需要图形界面完全用不到它。即使需要也建议先确认有没有更通用的替代方案比如 SDL。MSYS2、MinGW、pacman 的关系这是最容易被绕晕的一组概念。简单说MSYS2 安装器 包管理环境类比一个应用商店 | -- pacman 包管理器负责下载安装软件类比apt | -- MinGW-w64 通过 pacman 安装的 GCC 工具链类比gcc 软件包 | -- gcc / g / gdb 编译器本体MSYS2 本身不带编译器。装完 MSYS2 你得到的是一个终端和 pacman 这个包管理器。需要用 pacman 执行一条安装命令才会把 gcc 下载到本地。打个比方MSYS2 是 Steampacman 是 Steam 的下载功能MinGW GCC 是你要下载的游戏。装了 Steam 不代表你有游戏还得点安装。ucrt 和 msvcrt 的区别在 MSYS2 里装 gcc 时会看到两个版本前缀mingw-w64-ucrt-x86_64-gcc和mingw-w64-x86_64-gcc。区别在于 C 运行时库ucrtUniversal C RuntimeWindows 10 自带的新版运行时和 Visual Studio 用的是同一套msvcrtMicrosoft Visual C Runtime老版运行时兼容性更广但功能较旧新项目选 ucrt 就对了。Windows 侧安装 MinGW GCC第一步安装 MSYS2从 msys2.org 下载安装包安装到默认路径C:\msys64。安装完成后会弹出 MSYS2 MSYS 终端。第二步用 pacman 安装 gcc在 MSYS2 MSYS 终端中输入pacman-Smingw-w64-ucrt-x86_64-gcc注意终端类型管理软件包要用MSYS2 MSYS终端不要选 UCRT64 终端。UCRT64 终端是用来使用编译器的不是用来安装编译器的。包名各段含义片段意思mingw-w64GCC 的 Windows 移植版ucrt使用 Universal C Runtimex86_6464 位架构gccGNU C/C 编译器安装完成后编译器位于C:\msys64\ucrt64\bin\gcc.exe。第三步添加 PATH 环境变量Win S搜索环境变量打开编辑系统环境变量点环境变量在用户变量中选中Path点编辑点新建填入C:\msys64\ucrt64\bin确定保存注意两点添加的是目录路径C:\msys64\ucrt64\bin不是C:\msys64\ucrt64\bin\gcc.exe。PATH 的工作方式是系统在目录下找可执行文件不需要指定到具体.exe用户变量就够了不用动系统变量第四步验证新开一个cmd 或 PowerShell 窗口旧窗口读不到新的 PATH输入gcc --version能看到版本号即安装成功。踩坑记录终端选错MSYS2 安装后在开始菜单里有好几个入口——MSYS2 MSYS、MSYS2 UCRT64、MSYS2 MINGW64 等。pacman 命令只能在 MSYS2 MSYS 终端里用UCRT64 终端里会报command not found。两者的分工是MSYS 管理软件包UCRT64 使用编译器。包名粘贴带乱码从网页或聊天工具复制命令到终端时可能带入不可见的 Unicode 字符。终端会把这些字符当成命令名的一部分报command not found。遇到这种情况手打一遍就行。包名中间的空格mingw-w64-ucrt-x86_64-gcc是一个完整的包名。如果在x86_64和gcc之间加了空格pacman 会把它当成两个包第一个不存在就报target not found。Linux 侧WSL2 GCC前提WSL2 已安装如果还没装 WSL2在管理员 PowerShell 里执行wsl--install安装完重启会自动装好 Ubuntu。安装编译器打开 WSL 终端或在 PowerShell 里执行wsl运行sudoaptupdatesudoaptinstall-ybuild-essentialbuild-essential是一个元包包含gcc/g— C/C 编译器make— 构建工具libc6-dev— C 标准库开发头文件装完后pthread.h、semaphore.h、sys/ipc.h、sys/shm.h、unistd.h等 POSIX 头文件全部可用不需要额外安装任何东西。验证gcc--version编译 POSIX 代码涉及多线程的代码需要链接 pthread 库gcc program.c-oprogram-lpthread不加-lpthread会报undefined reference to pthread_create之类的链接错误。VS Code 插件配置C/C 插件在 VS Code 扩展面板CtrlShiftX搜索 “C/C”安装微软官方的那个。它的作用语法高亮没有它.c文件是纯白文本代码补全和智能提示红色波浪线标记编译错误F5 一键调试WSL 插件搜索 “WSL”安装微软官方的 WSL 扩展。不装这个插件也能在 VS Code 终端里手动切到 WSL shell 执行编译但体验是割裂的不装 WSL 插件装 WSL 插件文件浏览器看 Windows 文件看 WSL 里的 Linux 文件IntelliSense用 MinGW 的 gcc 分析代码用 WSL 的 gcc 分析代码调试器跑在 Windows 上跑在 WSL 里写fork()报红线吗报因为 MinGW 没有不报WSL gcc 认识装了之后VS Code 左下角会出现绿色图标点在 WSL 中重新打开整个编辑器就切换到 Linux 模式。IntelliSense、调试器、终端全部基于 WSL 的 gcc信息一致。关于 VC6.0有些教程会推荐 VC6.0Visual C 6.01998 年的软件作为 C/C 入门 IDE。网上还有各种免安装绿色版。几个事实免安装只意味着跳过了 setup 向导运行时仍然会往注册表写入 COM 组件注册、文件关联等信息VC6.0 的编译器对 C99 标准支持不完整变量必须在函数开头声明、//单行注释可能报错它的调试器、代码补全功能和 VS Code C/C 插件相比差了一个时代MinGW GCC 支持最新的 C/C 标准命令行编译简洁直接。配合 VS Code 后编辑、补全、调试的体验远好于 VC6.0。不值得花时间在二十年前的工具上。总结整个环境搭建可以压缩为三步WSL 里一条命令sudo apt install -build-essentialMSYS2 里一条命令pacman -S mingw-w64-ucrt-x86_64-gcc再加一条 PATHVS Code 装两个插件C/C 和 WSL真正容易卡住的不是操作步骤而是搞清楚 MSYS2、MinGW、pacman 之间的关系以及 POSIX 代码和 Windows API 代码为什么不能用同一个编译器编译。理清这些概念之后剩下的就是敲命令的事。 相关新闻 DDD-027:事件溯源(Event Sourcing) DDD-027:事件溯源(Event Sourcing) 本章导读 事件溯源(Event Sourcing)是一种革命性的数据持久化范式,它不再存储对象的当前状态,而是存储导致当前状态的所有事件。每一个业务操作都以事件的形式被记录,通过回放这些事件可以重建任意时刻的系统状态。本章将深入探讨事… 2026/6/25 14:22:52 如何高效管理macOS菜单栏:Ice终极指南帮你告别杂乱 如何高效管理macOS菜单栏:Ice终极指南帮你告别杂乱 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 你是否曾经为macOS菜单栏上拥挤不堪的图标感到烦恼?各种应用程序图标争相占… 2026/6/25 13:22:52 QueryExcel:终极Excel批量处理神器,告别繁琐的数据查找工作 QueryExcel:终极Excel批量处理神器,告别繁琐的数据查找工作 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 面对海量Excel文件中的数据查找任务,你是否还在忍受着CT… 2026/6/25 13:22:52 最新新闻 关于从算法工程化角度看空间换时间策略的权衡的技术7 算法工程化中的空间换时间策略概述定义空间换时间策略的核心思想常见应用场景(如缓存、预处理、哈希表优化等)工程化视角下的目标:性能优化与资源消耗的平衡空间换时间的典型技术实现预处理与预计算(如动态规划中的表驱动法&#… 2026/6/25 15:22:53 2026 智能体开发实战:GLM-5.2、Kimi-K2.7-code、Grok 等模型统一 API 调用方案 一、紧跟行业热点:Agent 时代开发者面临的现实难题 2026 年被业内公认为智能体落地元年。GLM-5.2、Kimi-K2.7-code 新版本接连发布,再加上 Grok 文生视频模型持续迭代,大量开发者开始搭建自动化任务机器人、项目级代码开发系统、AI 短视频生… 2026/6/25 15:22:53 多实例SpringBean的应用,在调用大模型的时候的手段 大模型调用需要实例,多个用户高并发产生的实例,单个实例需要多个用户请求使用,属于串行,需要等待单个实例的bean 所以我们需要创建多个实例对象,使得多个用户不需要排队等待,这样,采用SpringBea… 2026/6/25 15:22:53 10102黄大年茶思屋榜文101期 第2题 低比特/低精度数据格式快速微调 用户名:华夏之光永存摘要现有通信行业量化大模型微调链路存在刚性效率短板:int4/int8 量化权重必须反量化至 fp16/fp32 高精度后才能开展全参数微调,反量化、重量化两步额外流程使微调耗时膨胀 4 倍以上,且量化微调后精度劣化普遍… 2026/6/25 15:22:53 Hive数据倾斜原因及解决办法 Hive数据倾斜原因及解决办法 一、外JOIN过滤条件放置WHERE导致大量NULL热点Shuffle倾斜 1.1 倾斜成因 LEFT/RIGHT/FULL JOIN场景,维度过滤条件写在WHERE而非ON后,JOIN完成后再过滤,未匹配产生的海量NULL关联键全部参与Shuffle分发,… 2026/6/25 15:22:53 树莓派3 config.txt硬件初始化全解析:从黑屏到工业级稳定运行 1. 项目概述:树莓派3的config.txt不是“配置文件”,而是硬件启动总控开关你刚拿到一块树莓派3,刷好Raspberry Pi OS,插上显示器、键盘,通电——结果屏幕一片黑,或者只亮LOGO不进系统;又或者USB设… 2026/6/25 15:15:55 日新闻 OpenClaw:面向业务流程的智能体操作系统架构解析 1. OpenClaw 不是“另一个 Agent 框架”,而是面向真实业务流的智能体操作系统 你点开 GitHub 上 OpenClaw 的 README,第一眼看到的不是“支持多模型”“内置 20 Skill”,而是一张带虚线边框的三层架构图:最上层写着 Business Fl… 2026/6/25 0:22:49 决策树可解释性实战:三层探针系统构建业务可理解的AI决策 1. 项目概述:当决策树不再“透明”,我们该如何真正看清它?决策树分类器常被称作机器学习里的“白盒模型”——结构清晰、分支可追溯、预测路径一目了然。但现实远比教科书复杂:一棵深度为12、节点数超3000的树,用graph… 2026/6/25 12:22:52 Java八股-线程池与并发为什么总出问题 Java八股:线程池与并发为什么总出问题 文章目录Java八股:线程池与并发为什么总出问题先说结论线程池到底解决什么线程池为什么会出问题一个线程池的执行过程为什么锁总是和并发题一起出现面试最常问的几个点实战里怎么设计更稳一个更稳的回答模板结尾先说… 2026/6/25 12:22:52 周新闻 第四章:本体推理的技术基础设施 当LLM不够用了——本体推理的企业决策实践第三章讲了"怎么落地"的方法论。这一章聚焦在"落地靠什么"——推理的技术基础设施。 如果说前三章是在论证"为什么要做本体推理"和"怎么做才能不失败",那么从这一章开始࿰… 2026/6/24 17:34:30 OpenClaw:本地AI工作流的可编程调度中枢 1. OpenClaw不是“另一个前端界面”,而是本地AI工作流的中枢调度器很多人第一次看到 OpenClaw,下意识会把它当成 ComfyUI 或 Ollama Web UI 那类图形化前端——点几下就能调模型、聊聊天。我最初也这么想,直到在 Ubuntu 24.04.4 的移动硬盘虚… 2026/6/24 17:34:33 3分钟打造你的游戏隐身衣:用Deceive重新掌控社交边界 3分钟打造你的游戏隐身衣:用Deceive重新掌控社交边界 【免费下载链接】Deceive 🎩 Appear offline for League of Legends, VALORANT, and Legends of Runeterra. 项目地址: https://gitcode.com/gh_mirrors/de/Deceive 你是否曾因为登录游戏就被… 2026/6/24 17:34:35 月新闻 仅剩47小时!Gemini 2.5欧洲语言模型权重微调窗口即将关闭:3个轻量级LoRA适配器+1套验证集,零代码快速部署 更多请点击: https://codechina.net 第一章:Gemini 2.5欧洲语言翻译能力演进与窗口期战略意义 Gemini 2.5在欧洲语言支持方面实现了质的跃升,尤其在德语、法语、西班牙语、意大利语及葡萄牙语的长上下文跨语言对齐、术语一致性保持和文化语境… 2026/6/25 5:32:38 【Gemini客户反馈分析实战指南】:20年AI产品专家亲授3大高价值洞察模型与落地工具包 更多请点击: https://kaifayun.com 第一章:Gemini客户反馈分析的核心价值与演进脉络 在AI产品持续迭代的背景下,Gemini模型的客户反馈已从早期零散的体验吐槽,逐步演变为结构化、多模态、实时驱动的关键决策依据。其核心价值不仅… 2026/6/25 3:47:27 Gemini用户差评聚类分析:3大隐性需求缺口暴露,错过本周将影响Q3产品迭代优先级 更多请点击: https://intelliparadigm.com 第一章:Gemini用户差评聚类分析:3大隐性需求缺口暴露,错过本周将影响Q3产品迭代优先级 我们对2024年6月1日–6月28日期间App Store与Google Play中含“Gemini”关键词的12,743条低分&a… 2026/6/25 9:51:33
DDD-027:事件溯源(Event Sourcing) DDD-027:事件溯源(Event Sourcing) 本章导读 事件溯源(Event Sourcing)是一种革命性的数据持久化范式,它不再存储对象的当前状态,而是存储导致当前状态的所有事件。每一个业务操作都以事件的形式被记录,通过回放这些事件可以重建任意时刻的系统状态。本章将深入探讨事… 2026/6/25 14:22:52
如何高效管理macOS菜单栏:Ice终极指南帮你告别杂乱 如何高效管理macOS菜单栏:Ice终极指南帮你告别杂乱 【免费下载链接】Ice Powerful menu bar manager for macOS 项目地址: https://gitcode.com/GitHub_Trending/ice/Ice 你是否曾经为macOS菜单栏上拥挤不堪的图标感到烦恼?各种应用程序图标争相占… 2026/6/25 13:22:52
QueryExcel:终极Excel批量处理神器,告别繁琐的数据查找工作 QueryExcel:终极Excel批量处理神器,告别繁琐的数据查找工作 【免费下载链接】QueryExcel 多Excel文件内容查询工具。 项目地址: https://gitcode.com/gh_mirrors/qu/QueryExcel 面对海量Excel文件中的数据查找任务,你是否还在忍受着CT… 2026/6/25 13:22:52
关于从算法工程化角度看空间换时间策略的权衡的技术7 算法工程化中的空间换时间策略概述定义空间换时间策略的核心思想常见应用场景(如缓存、预处理、哈希表优化等)工程化视角下的目标:性能优化与资源消耗的平衡空间换时间的典型技术实现预处理与预计算(如动态规划中的表驱动法&#… 2026/6/25 15:22:53
2026 智能体开发实战:GLM-5.2、Kimi-K2.7-code、Grok 等模型统一 API 调用方案 一、紧跟行业热点:Agent 时代开发者面临的现实难题 2026 年被业内公认为智能体落地元年。GLM-5.2、Kimi-K2.7-code 新版本接连发布,再加上 Grok 文生视频模型持续迭代,大量开发者开始搭建自动化任务机器人、项目级代码开发系统、AI 短视频生… 2026/6/25 15:22:53
多实例SpringBean的应用,在调用大模型的时候的手段 大模型调用需要实例,多个用户高并发产生的实例,单个实例需要多个用户请求使用,属于串行,需要等待单个实例的bean 所以我们需要创建多个实例对象,使得多个用户不需要排队等待,这样,采用SpringBea… 2026/6/25 15:22:53
10102黄大年茶思屋榜文101期 第2题 低比特/低精度数据格式快速微调 用户名:华夏之光永存摘要现有通信行业量化大模型微调链路存在刚性效率短板:int4/int8 量化权重必须反量化至 fp16/fp32 高精度后才能开展全参数微调,反量化、重量化两步额外流程使微调耗时膨胀 4 倍以上,且量化微调后精度劣化普遍… 2026/6/25 15:22:53
Hive数据倾斜原因及解决办法 Hive数据倾斜原因及解决办法 一、外JOIN过滤条件放置WHERE导致大量NULL热点Shuffle倾斜 1.1 倾斜成因 LEFT/RIGHT/FULL JOIN场景,维度过滤条件写在WHERE而非ON后,JOIN完成后再过滤,未匹配产生的海量NULL关联键全部参与Shuffle分发,… 2026/6/25 15:22:53
树莓派3 config.txt硬件初始化全解析:从黑屏到工业级稳定运行 1. 项目概述:树莓派3的config.txt不是“配置文件”,而是硬件启动总控开关你刚拿到一块树莓派3,刷好Raspberry Pi OS,插上显示器、键盘,通电——结果屏幕一片黑,或者只亮LOGO不进系统;又或者USB设… 2026/6/25 15:15:55
OpenClaw:面向业务流程的智能体操作系统架构解析 1. OpenClaw 不是“另一个 Agent 框架”,而是面向真实业务流的智能体操作系统 你点开 GitHub 上 OpenClaw 的 README,第一眼看到的不是“支持多模型”“内置 20 Skill”,而是一张带虚线边框的三层架构图:最上层写着 Business Fl… 2026/6/25 0:22:49
决策树可解释性实战:三层探针系统构建业务可理解的AI决策 1. 项目概述:当决策树不再“透明”,我们该如何真正看清它?决策树分类器常被称作机器学习里的“白盒模型”——结构清晰、分支可追溯、预测路径一目了然。但现实远比教科书复杂:一棵深度为12、节点数超3000的树,用graph… 2026/6/25 12:22:52
Java八股-线程池与并发为什么总出问题 Java八股:线程池与并发为什么总出问题 文章目录Java八股:线程池与并发为什么总出问题先说结论线程池到底解决什么线程池为什么会出问题一个线程池的执行过程为什么锁总是和并发题一起出现面试最常问的几个点实战里怎么设计更稳一个更稳的回答模板结尾先说… 2026/6/25 12:22:52
第四章:本体推理的技术基础设施 当LLM不够用了——本体推理的企业决策实践第三章讲了"怎么落地"的方法论。这一章聚焦在"落地靠什么"——推理的技术基础设施。 如果说前三章是在论证"为什么要做本体推理"和"怎么做才能不失败",那么从这一章开始࿰… 2026/6/24 17:34:30
OpenClaw:本地AI工作流的可编程调度中枢 1. OpenClaw不是“另一个前端界面”,而是本地AI工作流的中枢调度器很多人第一次看到 OpenClaw,下意识会把它当成 ComfyUI 或 Ollama Web UI 那类图形化前端——点几下就能调模型、聊聊天。我最初也这么想,直到在 Ubuntu 24.04.4 的移动硬盘虚… 2026/6/24 17:34:33
3分钟打造你的游戏隐身衣:用Deceive重新掌控社交边界 3分钟打造你的游戏隐身衣:用Deceive重新掌控社交边界 【免费下载链接】Deceive 🎩 Appear offline for League of Legends, VALORANT, and Legends of Runeterra. 项目地址: https://gitcode.com/gh_mirrors/de/Deceive 你是否曾因为登录游戏就被… 2026/6/24 17:34:35
仅剩47小时!Gemini 2.5欧洲语言模型权重微调窗口即将关闭:3个轻量级LoRA适配器+1套验证集,零代码快速部署 更多请点击: https://codechina.net 第一章:Gemini 2.5欧洲语言翻译能力演进与窗口期战略意义 Gemini 2.5在欧洲语言支持方面实现了质的跃升,尤其在德语、法语、西班牙语、意大利语及葡萄牙语的长上下文跨语言对齐、术语一致性保持和文化语境… 2026/6/25 5:32:38
【Gemini客户反馈分析实战指南】:20年AI产品专家亲授3大高价值洞察模型与落地工具包 更多请点击: https://kaifayun.com 第一章:Gemini客户反馈分析的核心价值与演进脉络 在AI产品持续迭代的背景下,Gemini模型的客户反馈已从早期零散的体验吐槽,逐步演变为结构化、多模态、实时驱动的关键决策依据。其核心价值不仅… 2026/6/25 3:47:27
Gemini用户差评聚类分析:3大隐性需求缺口暴露,错过本周将影响Q3产品迭代优先级 更多请点击: https://intelliparadigm.com 第一章:Gemini用户差评聚类分析:3大隐性需求缺口暴露,错过本周将影响Q3产品迭代优先级 我们对2024年6月1日–6月28日期间App Store与Google Play中含“Gemini”关键词的12,743条低分&a… 2026/6/25 9:51:33