如果是这几年新买的电脑,默认这项是打开的
例如:我这台联想小新Pro 16 2022 就是默认打开的
不同的电脑,开启 BIOS 虚拟化的操作不一样,一般都是进入 BIOS → 找到虚拟化设置 → 开启
打开任务管理器查看
设置 → 隐私和安全性 → 开发者选项 → 开
控制面板 → 程序 → 程序和功能 → 启用或关闭Windows功能 → 虚拟机平台、适用于Linux的Windows子系统 → 重启生效
直接点击下载
下载完成之后,双击,一直点 next,安装完成即可
指定要使用的 WSL 版本为 WSL2:直接在 Windows powershell 中输入以下指令即可
wsl --set-default-version 2
还可以查看一下,能安装哪些版本的 Ubuntu
wsl --list --online
方法一:直接在 Windows powershell 中输入以下指令进行安装
wsl --install -d Ubuntu-20.04
可以通过下面的命令查看已经安装成功的Linux发行版
## 以下两条指令二选一即可
wsl -l
wsl --list
安装成功后,会在此电脑下,看到安装好的子系统
支持在 Windows 中直接访问 WSL2 中的目录
方法二:在 Microsoft Store 里面,搜索 ubuntu,找你需要的 Ubuntu 版本进行下载
在所有应用里面找到Ubuntu,将其固定到 “开始”,点击即可启动
## 查看安装的Ubuntu版本
wsl --list
## 卸载
wsl --unregister Ubuntu-20.04
## 再次查看
wsl --list
首先,在 Win11上下载和安装 VSCode
然后打开 VSCode,安装 Remote-WSL插件(现在貌似已经改名成了 WSL),其他开发所需插件自行配置(WSL 里的插件并不会继承原主机的插件,需要重新下载安装)
现在,我们随便建一个文件夹测试一下
我们到 WSL2 的家目录下,新建一个空的文件夹,叫做myCppdemo
然后,在终端中进入这个目录,并尝试用 VSCode 打开这个文件夹
你会发现,它会去安装一个 VS Code Server,然后这个文件夹就被 Win11下的 VSCode 打开了
VS Code Server 安装完成后,个人用户目录$HOME下会出现一个.vscode-server文件夹,里面有三个目录bin、extensions、data。bin目录下面存的是VS Code Server程序,extensions目录下是VS Code Server端安装的插件(你之后在 VSCode上安装的 WSL 的插件,都被放到了这个目录下),data目录下是用户数据
可以看到在 VSCode中显示了,这个文件夹是 WSL 里面的一个文件夹
现在,我们可以在 Win11 下的VSCode,去创建和编辑 WSL 内部的文件了!
例如,我现在新建一个 test.cpp
#include //万能头文件
#include
using namespace std;
const int inf = 0x3f3f3f3f;
int main()
{
vector<int> vec{0, 1, 2, 3, 4, 5};
for(auto& x : vec) {
cout << x << endl;
}
cout << "Hello WSL!"<< endl;
return 0;
}
尝试去编译运行一下,失败,因为没有 g++
因为 Ubuntu20.04 默认是不自带 gcc 和 g++的,所以还需要自己手动安装
首先,换一下源,否则下载速度太慢了!
# 首先备份源列表
sudo cp /etc/apt/sources.list /etc/apt/sources.list_backup
# 修改更新源
sudo vim /etc/apt/sources.list
#更新
sudo apt update
sudo apt upgrade
然后将原内容全部删掉,并将下面内容添加进去
deb http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-security main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-updates main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-backports main restricted universe multiverse
deb http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
deb-src http://mirrors.aliyun.com/ubuntu/ focal-proposed main restricted universe multiverse
最后,输入以下指令,该命令将安装一堆新包,包括gcc,g ++和make
## 安装一些必要的工具
sudo apt install build-essential
## 查看 gcc 和 g++ 的版本
g++ --version
gcc --version
现在,重新开始编译和运行 test.cpp文件,运行成功!
但是这样还是太麻烦,我希望直接在 VSCode中直接进行编译和调试!
之前我说了,WSL 里的插件并不会继承原主机的插件,所以需要重新下载安装
安装完成之后
现在,我们重新配置一下 .vscode 文件夹
新建一个.vscode
然后在.vscode文件夹下手动创建一个 launch.json 文件,然后复制下面这段内容到 launch.json 中
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "(gdb) Launch",
"type": "cppdbg",
"request": "launch",
"program": "${fileDirname}/${fileBasenameNoExtension}.out",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"preLaunchTask": "build",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}
然后在.vscode文件夹下手动创建一个 tasks.json 文件,然后复制下面这段内容到 tasks.json 中
{
"version": "2.0.0",
"tasks": [
{
"type": "shell",
"label": "build",
"command": "g++",
"args": [
"-g",
"${file}",
"-o",
"${fileDirname}/${fileBasenameNoExtension}.out"
],
"options": {
"cwd": "/usr/bin"
},
"problemMatcher": [
"$gcc"
],
"group": {
"kind": "build",
"isDefault": true
}
}
]
}
注意,如果没有安装 gdb,需要先安装(这Ubuntu20.04穷的要死,啥都没预装),否则无法 F5 进行调试
sudo apt install gdb
WSL2的安装与使用
WSL2 + Ubuntu20.04安装记录
微软官方文档:手动安装 WSL2