WSL+VScode 快速搭建 Linux 下 C/C++ 开发环境:TaoToken 统一 Key 接入 AI 补全
1. 为什么我放弃了虚拟机和双系统改用 WSL VScode 写 C/C如果你在 Windows 上写 C/C大概率经历过这种纠结装 Visual Studio 太重装 MinGW 又总在链接阶段报一些莫名其妙的错想用 GDB 调试还得额外折腾一遍路径。更麻烦的是很多数据结构、算法题、开源项目的构建脚本默认就是给 Linux 写的Makefile里一个gcc命令在 Windows 上就得换成别的写法。我自己的场景很典型复习数据结构、刷题、偶尔写点小工具需要 Linux 环境来编译运行但又不想为了这点事去装双系统或者常年挂一个虚拟机。虚拟机的问题在于你不用它的时候它还在吃内存用的时候又因为分配的核心少编译大一点的项目慢得让人想砸键盘。WSLWindows Subsystem for Linux正好卡在这个痛点上。它让你在 Windows 里直接跑一个 Linux 子系统共享 CPU 和内存没有图形界面资源占用低启动快。再配上 VScode 的 Remote - WSL 插件你可以在 Windows 的 VScode 里直接编辑 WSL 中的文件、打开终端、调试程序体验几乎和本地开发一样。这篇文章要做的就是把这套环境从零搭起来并且接入 TaoToken 的统一 Key/API 通道让 VScode 里的 AI 补全也能用上。TaoToken 是一个 AI 模型 API 聚合平台你可以把它理解成一个统一的入口用一个 Key 就能调用多种模型省去到处注册、到处配 Key 的麻烦。官网地址是 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 后面配置时会用到。整套流程分四块装 WSL、配 VScode Remote、配 C/C 编译调试、接 TaoToken 做 AI 补全。每一步我都会给出可复制的命令和配置你跟着做就行。2. WSL 安装与 Ubuntu 基础环境配置避开 apt 源和 SSH 的坑2.1 安装 WSL 和 Ubuntu最省事的方式是用命令行。以管理员身份打开 PowerShell执行wsl --install这条命令会自动启用 WSL 功能、下载内核更新、并把 Ubuntu 设为默认发行版。执行完重启电脑再次打开 PowerShell 或终端系统会提示你设置 Ubuntu 的用户名和密码。这个用户名和密码是 Linux 子系统里的和 Windows 账户无关记好就行。如果你想要指定版本比如 Ubuntu 22.04可以这样wsl --install -d Ubuntu-22.04装完之后在开始菜单里能看到 Ubuntu 图标点进去就是一个 Linux 终端。第一次进入会要求你设置 UNIX 用户名和密码设置完成后就进入 shell 了。验证一下版本lsb_release -a正常会输出类似Ubuntu 22.04.3 LTS的信息。到这里WSL 本身就算装好了。2.2 更换 apt 源可选但推荐默认的 apt 源在国内访问速度可能不理想。备份并替换成国内镜像sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak sudo vim /etc/apt/sources.list把文件内容替换为以 Ubuntu 22.04 jammy 为例deb http://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse deb http://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse保存退出后更新sudo apt-get update sudo apt-get upgrade -y注意如果你用的是 Ubuntu 20.04把jammy换成focal18.04 换成bionic。版本代号写错会导致apt update报 404。2.3 安装编译调试工具链C/C 开发需要编译器、调试器、构建工具。一条命令装齐sudo apt-get install -y build-essential gdb make cmake gitbuild-essential包含了gcc、g、make等核心工具。装完后验证gcc --version g --version gdb --version如果都能输出版本号说明工具链就绪。2.4 配置 SSH可选如果你以后想从别的机器连到这个 WSL可以配一下 SSH。不过对于本文的场景——VScode 通过 Remote - WSL 连接——其实不需要 SSHRemote - WSL 走的是 WSL 的本地通道。所以这一步可以跳过。如果你确实需要简单配置如下sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak sudo vim /etc/ssh/sshd_config修改几处Port 8022 ListenAddress 0.0.0.0 PasswordAuthentication yes然后重启 SSHsudo service ssh restart这样就能用ssh 用户名localhost -p 8022连进来了。但再次强调VScode Remote - WSL 不依赖这个。3. VScode Remote - WSL 与 C/C 配置settings.json 和 launch.json 完整片段3.1 安装 VScode 和必要插件在 Windows 上安装 VScode官网直接下载安装包即可。打开后在扩展市场搜索并安装以下插件WSL由 Microsoft 发布全名 Remote - WSLC/C由 Microsoft 发布提供 IntelliSense、调试支持CMake Tools可选如果你用 CMake 构建安装完 WSL 插件后VScode 左下角会出现一个绿色图标点击它选择 “Connect to WSL”。VScode 会打开一个新窗口连接到你的 Ubuntu 子系统。第一次连接会自动在 WSL 里安装一个 VScode Server稍等片刻即可。连接成功后左下角会显示 “WSL: Ubuntu”。此时你打开的文件夹、终端、调试器全部运行在 Linux 环境里。3.2 配置 C/C 智能提示在 WSL 窗口里打开一个你的代码目录比如~/projects/cdemo。然后按CtrlShiftP输入 “C/C: Edit Configurations (UI)”或者直接创建.vscode/c_cpp_properties.json{ configurations: [ { name: Linux, includePath: [ ${workspaceFolder}/** ], defines: [], compilerPath: /usr/bin/gcc, cStandard: c17, cppStandard: c17, intelliSenseMode: linux-gcc-x64 } ], version: 4 }这个文件告诉 C/C 插件编译器在/usr/bin/gcc头文件搜索路径包含工作区所有子目录C 标准用 C17C 标准用 C17。这样补全和跳转就能正常工作。3.3 配置编译任务创建.vscode/tasks.json定义一个编译任务{ version: 2.0.0, tasks: [ { label: build, type: shell, command: /usr/bin/gcc, args: [ -g, ${file}, -o, ${fileDirname}/${fileBasenameNoExtension} ], group: { kind: build, isDefault: true }, problemMatcher: [$gcc] } ] }按CtrlShiftB就会编译当前打开的 C 文件生成同名的可执行文件。-g参数保留调试信息后面 GDB 调试需要它。3.4 配置调试创建.vscode/launch.json{ version: 0.2.0, configurations: [ { name: Debug C, type: cppdbg, request: launch, program: ${fileDirname}/${fileBasenameNoExtension}, args: [], stopAtEntry: false, cwd: ${fileDirname}, environment: [], externalConsole: false, MIMode: gdb, miDebuggerPath: /usr/bin/gdb, setupCommands: [ { description: Enable pretty-printing for gdb, text: -enable-pretty-printing, ignoreFailures: true } ], preLaunchTask: build } ] }这个配置做了几件事指定要调试的程序路径、工作目录、使用 GDB 作为调试器、在启动前先执行build任务。按 F5 就能编译并进入调试可以打断点、单步、查看变量。3.5 接入 TaoToken 统一 Key 做 AI 补全VScode 里做 AI 补全可以用 Continue 插件或者 Cline 插件。这里以 Continue 为例因为它配置简单支持自定义 API 端点。在 VScode 扩展市场搜索 “Continue” 并安装。安装后在侧边栏打开 Continue点击设置图标编辑配置文件。Continue 的配置文件通常位于~/.continue/config.json在 WSL 里。你可以直接编辑{ models: [ { title: TaoToken, provider: openai, model: gpt-4o-mini, apiBase: https://taotoken.net/api, apiKey: 你的TaoToken Key } ], tabAutocompleteModel: { title: TaoToken Autocomplete, provider: openai, model: gpt-4o-mini, apiBase: https://taotoken.net/api, apiKey: 你的TaoToken Key } }这里的关键是三个东西Base URL填https://taotoken.net/apiAPI Key填你在 TaoToken 控制台创建的 KeyModel ID填你想用的模型比如gpt-4o-mini或者claude-3-5-sonnet等。TaoToken 的模型列表可以在控制台查看。如果你用的是 Cline 插件配置方式类似在设置里选择 “OpenAI Compatible”然后填 Base URL、Key、Model ID。Key 的获取方式访问 https://taotoken.net/api-keys 登录后创建一个新的 API Key复制出来填到配置里。注意不要把这个 Key 提交到公开仓库。4. 验证请求一个最小 C 程序跑通编译、调试与补全4.1 写一个最小 C 程序在 WSL 里创建目录和文件mkdir -p ~/projects/cdemo cd ~/projects/cdemo vim hello.c输入以下代码#include stdio.h int add(int a, int b) { return a b; } int main(void) { int x 3; int y 4; int sum add(x, y); printf(sum %d\n, sum); return 0; }保存退出。在 VScode 里打开这个文件夹如果还没打开的话按CtrlShiftB编译。如果一切正常终端会输出编译成功的信息目录下出现hello可执行文件。运行./hello输出sum 7。4.2 验证调试在int sum add(x, y);这一行左侧点击打一个红点断点。按 F5 启动调试。程序会在断点处停下左侧变量面板能看到x、y的值按 F10 单步执行能看到sum被赋值。按 F5 继续程序输出结果并退出。如果调试器报错说找不到gdb检查miDebuggerPath是否指向/usr/bin/gdb以及是否在 WSL 里装了gdb。4.3 验证 AI 补全在hello.c里新起一行输入int mul稍等片刻Continue 或 Cline 应该会给出补全建议比如int multiply(int a, int b)的完整函数框架。按 Tab 接受补全。如果补全没反应打开 Continue 的输出面板看日志。常见问题是 API Key 填错、Base URL 少了/api、或者模型名写错。TaoToken 的 API 是 OpenAI 兼容格式所以provider选openai即可。你也可以在 Continue 的聊天框里直接问“帮我写一个 C 语言的冒泡排序”看它是否能正常返回代码。如果能返回说明 TaoToken 通道已经通了。5. 本篇常见错排查401、local proxy failed、reading choices、OAuth 报错对照5.1 401 Unauthorized这是最常见的错误意思是 API Key 无效或没传。检查三处Continue 配置里的apiKey是否填了正确的 TaoToken Key有没有多余空格。Key 是否已经过期或被删除去 https://taotoken.net/api-keys 确认。请求头是否正确。TaoToken 兼容 OpenAI 格式Continue 会自动加Authorization: Bearer key一般不用手动改。如果还是 401试着用 curl 直接测一下curl https://taotoken.net/api/v1/chat/completions \ -H Content-Type: application/json \ -H Authorization: Bearer 你的Key \ -d { model: gpt-4o-mini, messages: [{role: user, content: hello}] }如果 curl 能返回结果说明 Key 和 Base URL 没问题问题在插件配置。如果 curl 也 401那就是 Key 本身的问题。5.2 local proxy failed这个错误通常出现在插件试图通过本地代理转发请求时。检查是否在 VScode 设置里配了http.proxy如果有清空它。Continue 配置里是否有proxy字段删掉。WSL 里的环境变量http_proxy、https_proxy是否指向了一个不可用的地址。用env | grep -i proxy查看如果有unset掉。TaoToken 的 API 是直接可访问的不需要额外代理。所以任何代理配置都可能导致local proxy failed。5.3 reading choices 报错这个错误一般出现在流式响应解析时插件期望的 JSON 结构和实际返回的不一致。可能原因模型名写错了TaoToken 返回了一个错误对象而不是正常的 choices 数组。检查model字段是否在 TaoToken 支持的模型列表里。Base URL 写成了https://taotoken.net/api但实际需要https://taotoken.net/api/v1。Continue 的apiBase填https://taotoken.net/api即可它会自动补/v1。如果你用的是其他插件可能需要填完整路径。可以先试https://taotoken.net/api不行再试https://taotoken.net/api/v1。5.4 OAuth 相关报错如果你在插件里选择了 “Sign in with OAuth” 之类的选项可能会报 OAuth 错误。TaoToken 用的是 API Key 认证不需要 OAuth。所以在插件里选择 “API Key” 或 “OpenAI Compatible” 模式不要选 OAuth 登录。5.5 编译时报 “cannot find -lstdc”如果你写的是 C 程序但用gcc编译会报这个错。改用gg -g main.cpp -o main或者在tasks.json里把command改成/usr/bin/g。5.6 调试时断点不生效检查编译时是否加了-g参数。没有-gGDB 找不到调试符号断点就不会停。另外确认launch.json里的program路径和实际生成的可执行文件路径一致。6. 把这套环境用起来TaoToken 统一 Key 的日常开发接入环境搭好之后日常开发流程就是打开 VScode连接到 WSL打开项目文件夹写代码按CtrlShiftB编译按 F5 调试AI 补全在后台默默工作。TaoToken 的价值在于你不需要为每个 AI 工具单独申请 Key。Continue、Cline、甚至你在终端里用的 AI 命令行工具都可以填同一个 Base URL 和 Key。模型也可以随时切换今天用gpt-4o-mini做补全明天想试试claude-3-5-sonnet写复杂逻辑改一下配置里的model字段就行不用重新注册账号。如果你后面想用 Claude Code 或者 Codex 这类命令行 AI 编码工具也是同样的三件套Base URL 填https://taotoken.net/apiKey 填 TaoToken 的 KeyModel ID 填你想要的模型。具体接入文档可以参考 https://taotoken.net/doc 。对于长期写代码、跑 Agent 任务的场景TaoToken 也有 Coding Plan 可以了解https://taotoken.net/coding-plan 。它适合需要稳定、大量调用模型的开发者比按次计费更划算。最后提醒一点API Key 不要硬编码在会提交到 Git 的文件里。Continue 的配置文件在~/.continue/config.json这个路径在 WSL 的用户目录下一般不会被提交。但如果你把配置放在项目目录里记得加.gitignore。整套流程走下来你应该能在 Windows 上拥有一个响应快、资源占用低、调试方便、还带 AI 补全的 Linux C/C 开发环境。WSL 负责提供 Linux 运行时VScode 负责编辑和调试TaoToken 负责统一 AI 能力入口。三者各司其职用起来很顺。
上一篇/下一篇内容由系统自动关联
返回资讯列表 →