安装WSL并在VScode调用

Star 2022-05-14 9:27:28 2022-05-14 9:48:36

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安装

  1. 打开 Microsoft Store ,搜索Ubuntu,并安装 (经常卡顿,请耐心等待)

    wsl_install_ubuntu.png

  2. 开启相关服务

    • 搜索windows 功能,并打开

    • 打开以下两项

      wsl_install_service2.png

    按要求重启一次,安装相关服务

  3. 在开始菜单打开 Ubuntu 22.04,发现报错 (我当时忘了截图了)

    解决方案: 手动安装WSL新内核:WSL2 Linux kernel update package for x64 machines

  4. 再次打开Ubuntu 22.04 然后发现可以了

    等待一段时间后输入你之后要给linux系统用的用户名和密码,就可以进去了,会看到一个这样的界面,表明成功了(怎么给我报了条错,咳咳...不用管,ubuntu经常这样)。

3.2 配置 VScode

在拓展程序搜索wsl,安装第一个

3.2 配置 linux

用过Debian系的linux的人都知道apt(包管理器)的相关操作,不知道也没事,只需要知道这玩意能装软件和卸软件就行了

  1. 更新源和软件,防止出事

    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
      
  2. 安装gccg++(C语言和C++的编译器)

    sudo apt install gcc g++
    
  3. 安装 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.一些小知识

  1. 命令

    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
    

    这些应该差不多够用了,其实有什么问题直接百度肯定有答案

  2. 好像把文件拷到linux里面运行更快,linux的文件在这里

    进去之后是根目录,我们的用户文件在home里

  3. 如果除了问题就去百度,不行就去国际版的bing用英文搜,再不行就科学上网去google

5.终于写完了

如果有什么错误欢迎指正,虽然可能会特别冷没人看,我相信一定喜欢折腾的人,比如我


夹带一点私货 -- markdown 编辑器

推荐 typora 和 marktext

由于 typora 从1.0就开始收费了,所以可以考虑用早期的beta版本,也很好用,可惜的是不支持行内公式,但是无伤大雅。

或者可以选择 typora 的开源替代品 marktext 也很舒服,我现在在用。

下载: