WSL(Windows Subsystem for Linux)中搭建C++开发环境的教程(搭建.环境.教程.开发.Windows...)

wufei123 发布于 2025-09-11 阅读(4)
<p>首先更新系统并安装build-essential、gdb;再通过VS Code的Remote - WSL扩展实现无缝编辑;将项目存于WSL文件系统以提升I/O性能;最后集成CMake与Vcpkg实现高效构建和依赖管理,从而在WSL中完成现代化C++开发环境搭建。</p>

wsl(windows subsystem for linux)中搭建c++开发环境的教程

在WSL(Windows Subsystem for Linux)里搭建C++开发环境,在我看来,简直是Windows用户拥抱Linux开发生态最优雅的姿势。它不像虚拟机那样笨重,也不需要双系统切换的麻烦,就能让你在熟悉的Windows桌面下,享受到几乎原生的Linux开发体验,尤其对C++这种对编译环境和工具链要求较高的语言来说,优势非常明显。

解决方案

要让WSL里的C++环境跑起来,其实步骤并不复杂,但有些细节处理得当,能省去不少后续的麻烦。

首先,确保你的Windows系统已经开启了WSL功能。这通常在“启用或关闭Windows功能”里勾选“适用于Linux的Windows子系统”和“虚拟机平台”就行。重启后,去Microsoft Store搜一个你喜欢的Linux发行版,我个人偏爱Ubuntu,因为它社区活跃,资料多。安装完打开,它会提示你设置用户名和密码,这就算踏出了第一步。

接下来,进入你的WSL终端,第一件事永远是更新系统包列表和升级已安装的包:

sudo apt update
sudo apt upgrade

这能保证你后续安装的软件都是最新版本,避免一些不必要的依赖问题。

然后,就是安装C++开发的核心工具链了,主要是GCC(GNU Compiler Collection)和GDB(GNU Debugger),以及

make
工具。这些东西打包在一个叫做
build-essential
的元包里,安装它会省心很多:
sudo apt install build-essential gdb

安装完成后,你可以简单测试一下:

g++ --version
gdb --version

如果能正常显示版本信息,那恭喜你,C++的编译和调试基础已经就绪。

再来,一个好的代码编辑器是必不可少的。我强烈推荐VS Code,因为它对WSL的支持简直是无缝衔接。在Windows上安装VS Code,然后安装“Remote - WSL”扩展。安装后,你可以在WSL终端里直接输入

code .
命令,它就会在WSL文件系统的当前目录下打开VS Code,所有操作都在WSL环境里进行,但界面是Windows的,体验非常棒。

最后,我们写一个简单的C++程序来验证一下:

在WSL里创建一个文件,比如

hello.cpp
#include <iostream>

int main() {
    std::cout << "Hello from WSL C++!" << std::endl;
    return 0;
}

然后在终端里编译并运行:

g++ hello.cpp -o hello
./hello

如果终端输出了

Hello from WSL C++!
,那么你的WSL C++开发环境就搭建成功了。这个过程里,我通常会把项目文件直接放在WSL的文件系统里,比如
/home/youruser/projects
,而不是Windows的C盘,这样能获得更好的I/O性能。 为什么选择WSL进行C++开发?它比原生Linux或Windows有什么优势?

说实话,刚开始接触WSL,我只是觉得它是个新奇玩意儿,但深入用起来,才发现它在C++开发上的优势是实打实的。

首先,Linux原生工具链的优势。C++在Linux环境下,GCC、Clang这些编译器,Make、CMake这些构建工具,以及GDB这样的调试器,都是行业的黄金标准。它们的生态成熟,社区支持强大,很多开源项目也都是围绕这些工具链开发的。在Windows上,虽然有MSVC,MinGW等选项,但有时兼容性、配置复杂性会让人头疼。WSL直接把这套成熟的Linux环境搬了过来,你不用费心去模拟或适配,直接用最顺手的工具。

其次,Windows的便利性与Linux的强大结合。这是WSL最核心的卖点。你可以在Windows上享受所有你习惯的桌面应用、游戏,同时又能无缝切换到Linux终端,进行C++编译、脚本编写。比如,我可以在Windows的浏览器里查资料,在WSL的终端里编译代码,再用VS Code在Windows图形界面里编辑文件,所有这些都流畅自如,不需要虚拟机那种笨重的资源占用和文件共享的麻烦,更不用提双系统重启的痛苦了。文件系统集成也做得不错,虽然我建议项目放在WSL里以获得最佳性能,但需要访问Windows文件时也很方便。

再者,资源占用和启动速度。相较于传统的虚拟机(如VMware、VirtualBox),WSL的资源占用要轻量得多,启动速度也快得多。它更像是一个集成在Windows内核之上的轻量级容器,而不是一个完整的虚拟硬件平台。这对于笔记本用户或者资源有限的机器来说,体验提升是巨大的。你几乎感觉不到它在后台运行,但需要时它又能立刻响应。

对我来说,它就是那个完美的“中间地带”——既不用完全抛弃Windows,又能充分利用Linux在开发领域的深厚积累。

在WSL中配置C++环境有哪些常见的坑?如何避免或解决?

在WSL里搭建C++环境,虽然整体体验很好,但过程中也确实会遇到一些小“坑”,不注意的话可能会让你抓狂一阵。

第一个坑,也是最常见的:文件I/O性能问题。 如果你的C++项目文件是放在Windows的C盘、D盘,然后通过WSL去访问编译,你会发现编译速度明显变慢。这是因为WSL在访问Windows文件系统时,中间会有一个翻译层,性能损耗较大。 解决方案: 始终将你的C++项目代码存放在WSL的Linux文件系统内,比如

/home/youruser/projects
目录下。只有当你确实需要与Windows应用共享文件时,才考虑放到Windows分区。如果你必须在Windows分区下工作,可以考虑使用WSL2,它的文件I/O性能比WSL1有了显著提升。

第二个坑:PATH环境变量配置。 有时你安装了某个工具,但在终端里直接输入命令却提示“command not found”。这可能是因为该工具的安装路径没有被正确添加到WSL的PATH环境变量中。 解决方案: 大多数通过

apt install
安装的工具会自动配置PATH。如果遇到自定义安装的工具,你需要手动编辑
~/.bashrc
~/.zshrc
(如果你用Zsh)文件,添加类似
export PATH="/path/to/your/tool:$PATH"
的行,然后
source ~/.bashrc
使其生效。

第三个坑:VS Code Remote - WSL扩展的配置问题。 有时VS Code无法连接到WSL,或者远程开发功能出现异常。这可能是因为WSL环境本身、VS Code或扩展的缓存问题。 解决方案: 确保你的WSL发行版是健康的,可以正常运行。尝试在VS Code中卸载并重新安装“Remote - WSL”扩展。有时,重启VS Code和WSL实例(通过

wsl --shutdown
在PowerShell中关闭所有WSL实例,再重新启动)也能解决问题。此外,确保你的VS Code是最新版本。

第四个坑:网络和防火墙问题。 偶尔会遇到WSL内部无法访问外部网络,或者外部无法访问WSL内部服务的状况,这在调试网络应用时尤其明显。 解决方案: 大多数情况下,WSL的网络是自动配置的,并能通过Windows的网络代理。如果遇到问题,首先检查Windows防火墙设置,确保没有阻止WSL的网络连接。对于WSL2,它有自己的虚拟网卡和IP地址,可以通过

ip addr
查看。如果需要从Windows访问WSL2内部运行的服务,你可能需要进行端口转发,或者直接使用WSL2的IP地址。不过,通常的C++开发很少直接涉及这些复杂的网络配置。

这些坑其实都算不上什么大问题,只要知道原因和解决办法,都能轻松绕过。关键是理解WSL的工作原理,它毕竟是在Windows上运行的Linux,有些行为会和纯粹的Linux环境有所不同。

PIA PIA

全面的AI聚合平台,一站式访问所有顶级AI模型

PIA226 查看详情 PIA 除了基础环境,WSL下的C++开发还能如何进阶?CMake和Vcpkg如何集成?

搭建好基础的C++编译和调试环境只是第一步,要真正高效地进行现代C++项目开发,我们还需要一些更强大的工具来管理构建和依赖。在WSL下,集成CMake和Vcpkg是提升开发体验的关键。

CMake:现代C++项目的构建利器

CMake是一个跨平台的构建系统生成器,它能根据你的

CMakeLists.txt
文件生成特定平台的构建脚本(比如Linux下的Makefile,或者Windows下的Visual Studio项目文件)。对于复杂的C++项目,手动编写Makefile很快就会变得难以维护,而CMake则极大地简化了这个过程。

在WSL中安装CMake非常简单:

sudo apt install cmake

安装后,你可以在VS Code中打开你的CMake项目。VS Code的“CMake Tools”扩展(同样在Windows侧安装)会与WSL的CMake进行集成。当你打开一个包含

CMakeLists.txt
的文件夹时,VS Code会自动识别并提供构建、运行、调试等选项。

典型的CMake项目构建流程是这样的:

# 在项目根目录创建一个build目录
mkdir build
cd build
# 配置项目,生成Makefile
cmake ..
# 编译项目
make
# 运行可执行文件
./your_executable

VS Code的CMake Tools扩展能把这些命令都封装起来,让你通过界面操作完成。它会自动检测WSL中的CMake,并允许你选择不同的构建套件(比如GCC 9、GCC 11等),非常方便。

Vcpkg:C++包管理的解决方案

C++项目经常需要依赖各种第三方库,比如Boost、Poco、OpenCV等。手动下载、编译、安装这些库,并正确配置它们的头文件和库文件路径,是一个非常繁琐且容易出错的过程。Vcpkg是微软主导的一个C++包管理器,它能帮助你自动化这个过程。

在WSL中集成Vcpkg需要一些步骤,但一旦设置好,后续管理依赖会轻松很多。

  1. 克隆Vcpkg仓库:

    git clone https://github.com/microsoft/vcpkg.git
    cd vcpkg
  2. 运行Vcpkg的引导脚本:

    ./bootstrap-vcpkg.sh

    这会编译Vcpkg自身。

  3. 集成Vcpkg: 为了让CMake能找到Vcpkg安装的库,你需要告诉它Vcpkg的位置。最常见的方式是通过CMake的工具链文件。

    # 这一步会生成一个CMake工具链文件
    ./vcpkg integrate install

    这个命令会在Vcpkg目录下生成一个

    scripts/buildsystems/vcpkg.cmake
    文件。
  4. 在CMake项目中指定Vcpkg工具链: 在你项目的

    CMakeLists.txt
    中,通常不需要直接修改。而是在调用
    cmake
    命令时,通过
    -DCMAKE_TOOLCHAIN_FILE
    参数指定Vcpkg的工具链文件。 例如,在
    build
    目录下配置项目时:
    cmake .. -DCMAKE_TOOLCHAIN_FILE=/path/to/your/vcpkg/scripts/buildsystems/vcpkg.cmake

    在VS Code的CMake Tools中,你可以在设置里指定

    cmake.toolchain
    路径,指向Vcpkg的工具链文件,这样每次构建都会自动带上这个参数。

现在,你就可以通过Vcpkg安装库了。比如,安装JsonCpp:

./vcpkg install jsoncpp

Vcpkg会自动下载源码、编译并在WSL中安装JsonCpp,同时处理其依赖。然后,在你的

CMakeLists.txt
中,就可以像这样使用它:
find_package(jsoncpp CONFIG REQUIRED)
target_link_libraries(your_executable PRIVATE jsoncpp)

通过CMake和Vcpkg的组合,你的C++项目在WSL中的构建和依赖管理会变得非常现代化和高效,这对于开发大型或依赖复杂的项目来说,是不可或缺的。这种进阶配置,让WSL下的C++开发体验,几乎与在原生Linux环境下无异,甚至因为Windows桌面环境的加持,在某些方面更胜一筹。

以上就是WSL(Windows Subsystem for Linux)中搭建C++开发环境的教程的详细内容,更多请关注知识资源分享宝库其它相关文章!

相关标签: linux js bootstrap git json windows github 防火墙 浏览器 虚拟机 for 封装 Collection windows visual studio opencv microsoft linux ubuntu gnu 自动化 大家都在看: C++在Linux系统中环境搭建步骤详解 C++在Linux系统下环境搭建常见坑及解决方案 C++ Linux开发环境 GCC编译器安装指南 C++嵌入式Linux环境怎么搭建 Yocto项目配置 文件权限如何设置 Linux/Windows平台权限控制

标签:  搭建 环境 教程 

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。