前言:
我的Windows 版本: 10.0.19045.4291 (如果你是Win11或者你要使用WSL2请谨慎)
之前是可以用的,但安装Vmware(并安装了Ubuntu进行了一番实验后,就出现如标题所述问题)
问题:
好久没有使用vscode远程操作了,今天打开vscode后突然就报错如下:
根据网上朋友遇到的情况,我在powershell中分别试过以下命令:
netsh winsock reset
wsl.exe --shutdown
bcdedit /set hypervisorlaunchtype auto
最后我发现在Powershell中输入wsl -l -v显示state均为Stopped,而且版本均为2;
我想我大概知道原因了,这与日前我的Vmware “安装之路” 有关;
最后解决我的问题的方法如下(我重装了UBuntu):
0.注销名为 "Ubuntu" 的 WSL 实例
wsl --unregister Ubuntu
【注】:此时再wsl -l -v的话,那个名为Ubuntu的实例就没有了,只剩下我的Ubuntu-20.04这是虚拟机用的实例;
1.查看电脑hyper -v选项:
“控制面板”-“程序和功能”-左上角的“启用或关闭Windows功能”-勾选“Hyper -v”和“适用于Linux的Windows子系统”;
如果你没有找到Hyper -v这个选项(有可能是你之前安装VMware给删除了(我就是这样),也有可能Win11家庭版就没有这个选项),总之你只需要重新安装即可,具体请看链接;
2.我最后尝试在Microsoft Store里重新下载Linux发行版(Ubuntu):
点击“打开”后你可能会遇到这样的问题(如果没有遇到,请跳过):
即出现了0x80370102错误,请看链接;
解决后,它会安装成功,然后你code . 进入vscode;
看起来是成功了:
准备写点hello world:
首先记得在vscode中安装WSL插件(上图);
再创建一个文件夹,以及test.cpp文件(上图);
在test.cpp里写点代码:
打开终端(快捷键是ctrl+`)【注】 ` 这个键是数字1左边那个键];
准备使用g++编译该文件,发现g++没有安装,故sudo apt install g++;
看来是需要更新下载源:
sudo apt-get update
再安装g++:
sudo apt install g++
再编译运行:
远程连接服务器:
如果你需要远程连接服务器(我之前一直使用xshell连接的,但是vim实在是不方便,所以准备切回vscode),请接着看:
安装下图插件:
按键盘F1后,点击下图:
如上图,输入登录用户名@公网IP(主机号);
举个例子ssh zhangsan@8.130.13.46
回车后,点击第一行(这是添加你的用户以及对应主机到本地配置文件,一般都是第一行,具体看你你用户名称),然后你的vscode右下角会出现:
证明主机已经被添加:
点击“打开配置”可以看到你的本地配置文件,然后如下图,更改方框中WSL为远程(隧道/SSH),然后选择在当前窗口连接或者新窗口连接(如下图右下角方框),选择Linux(如果是的话),然后输入密码连接即可,直到连接成功(💻符号会变为绿色);
你也可以点击右边的“连接”,选择Linux(如果是的话),然后输入密码连接即可;
然后进入文件夹:
创建.cpp文件,写下SSH远程机器的第一行代码hello ssh!
也许你在安装的时候会遇到如下图问题,点击 “允许” 即可,这与vscode和远程机器中库的版本有关,具体请看 链接;
当然,途中我ssh连接时参考了这篇文章;
你如果还想连接第二台主机时,你就按F1,然后ssh即可(同上);
另外为了更好地支持C++11,你还可以在设置中修改:
你还可以使用GDB来调试代码:
安装扩展:
(删掉默认配置,然后添加配置:GDB启动)
(略加修改);
(如果出现上图,就是你的可执行文件output的路径不对);
<全文完>
参考链接:
链接
链接
如何使用vscode+wsl+vscode server来开发Linux程序(B站)