0.前置说明
WSL是什么,以下定义来自百度百科
Windows Subsystem for Linux(简称WSL)是一个在Windows 10上能够运行原生Linux二进制可执行文件与Canonical公司合作开发,其目标是使纯正的Ubuntu、Debian等映像能下载和解压到用户的本地计算机,并且映像内的工具和实用工具能在此子系统上原生运行。
1.折腾缘由
众所周知,上周有一道图论题在win上跑就RE,到linux上跑就可正常运行,导致我调了半天感觉自己没问题但是搜索数据就是爆,气急败坏,直接交了一份然后... 竟然A了,我立刻重启去我的linux里跑了一遍,确实没问题,于是我又请yzy在他的电脑上跑了一遍,发现也炸了。
后来听@Laffey解释之后才知道,因为win的系统栈默认好像只有 1MB
,数据太大直接把栈爆了,然而linux就没事。由于诸多原因,日常的使用并离不开windows,我又没法每次都去linux跑代码,于是我就想了个办法,装个linux子系统,用子系统跑代码 (刚好VScode是微软自己家的,所以配置地很简单) 。
2.目的
在win11(10)上安装WSL(Ubuntu22.04)并在vscode中使用linux子系统跑代码。(低于win10的可以选择自行更新或放弃)
3.开始整活
3.1安装
-
打开 Microsoft Store ,搜索Ubuntu,并安装 (经常卡顿,请耐心等待)
-
开启相关服务
-
搜索windows 功能,并打开
-
打开以下两项
按要求重启一次,安装相关服务
-
-
在开始菜单打开 Ubuntu 22.04,发现报错 (我当时忘了截图了)
解决方案: 手动安装WSL新内核:WSL2 Linux kernel update package for x64 machines
-
再次打开Ubuntu 22.04 然后发现可以了
等待一段时间后输入你之后要给linux系统用的用户名和密码,就可以进去了,会看到一个这样的界面,表明成功了(
怎么给我报了条错,咳咳...不用管,ubuntu经常这样)。
3.2 配置 VScode
在拓展程序搜索wsl
,安装第一个
3.2 配置 linux
用过Debian系的linux的人都知道apt
(包管理器)的相关操作,不知道也没事,只需要知道这玩意能装软件和卸软件就行了
-
更新源和软件,防止出事
sudo apt update && sudo apt upgrade
然后输入自己的密码,和windows一个道理,linux装软件也需要管理员权限
注意: 你输入的密码不显示但是输进去了
然后等待一段时间,默认的源有点慢,有能力的可以选择先去换源,然后在更新,由于系统没有图形界面,所以有点麻烦,多等会儿就好了。
-
换源(可以不做):
sudo nano /etc/apt/sources.list
然后把里面的内容替换成tuna的(清华源)
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse # 预发布软件源,不建议启用 # deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
然后
ctrl
+X
退出,选择Y
,然后按enter
再更新一次源
sudo apt update
-
-
安装
gcc
和g++
(C语言和C++的编译器)sudo apt install gcc g++
-
安装 VScode 支持
code .
等他跑完,就会弹出一个 VScode窗口,所下角是这样的
说明已经连上了子系统
3.4 配置linux子系统的VScode拓展程序
需要装两个拓展程序
如果已经装过了就选
-
code runner 配置
前言: 不是刚需但是很方便的运行代码的工具,自我感觉比 @Laffey 的那个好。
使用: 装上去之后新建一个
.cpp
文件打开后会发现右上角有一个运行按钮,点一下就会编译运行(快捷键ctrl
+alt
+N
),缺点是不能调试,因为他是通过终端命令运行的。优化: 有时候我们可能会创建一个名称有空格的代码文件,用code runner编译就会报错,因为空格影响了命令的执行,我们可以通过更改运行命令来解决
-
打开设置
-
切换到 ubuntu 22.04 的标签下,搜
code runner
,然后按图示操作,点击Execulor Map
下的Edit in settings.json
-
把
cpp
那一行改成这个 -
"cpp": "cd $dir && g++ '$fileName' -o tmp && ./tmp",
之后在编译的时候就会在改目录下生成一个名为
tmp
的可执行文件 -
如果有需要编译
.c
文件就把c
哪一行改成这个 -
"c": "cd $dir && gcc '$fileName' -o tmp && ./tmp",
-
这样就解决了
4.一些小知识
-
命令
cd dir # 进入到名为dir的文件夹,也可以是绝对路径 cd .. # 返回上级目录 cd # 回到home,相当于是windows的users文件夹,储存用户文件 mkdir dir # 在当前目录下建一个名为dir的文件夹 touch abc # 在当前目录下建一个名叫abc的文件,可以加后缀名 如:abc.cpp sudo apt install xxx # 从软件源里安装xxx软件,软件源里不一定有。。。 sudo apt purge xxx # 卸载xxx软件 sudo dpkg -i xxx.deb # 从本地安装软件,ubuntu的包格式为deb
这些应该差不多够用了,其实有什么问题直接百度肯定有答案
-
好像把文件拷到linux里面运行更快,linux的文件在这里
进去之后是根目录,我们的用户文件在home里
-
如果除了问题就去百度,不行就去国际版的bing用英文搜,
再不行就科学上网去google
5.终于写完了
如果有什么错误欢迎指正,虽然可能会特别冷没人看,我相信一定喜欢折腾的人,比如我
夹带一点私货 -- markdown 编辑器
推荐 typora 和 marktext
由于 typora 从1.0就开始收费了,所以可以考虑用早期的beta版本,也很好用,可惜的是不支持行内公式,但是无伤大雅。
或者可以选择 typora 的开源替代品 marktext 也很舒服,我现在在用。
下载:
-
typora的早期免费版本:
其实我早就放到网盘里面了,不知道你们都发现没
-
marktext:
我刚刚放进网盘,欢迎下载