用 vscode + WSL 方案做操作系统实验

Note

本文建立在 WSL 的基础之上。

为何如此

  1. 这几个实验的部分小任务无法在 Windows 环境下编译,有些头文件是 Linux 专属的,比如 <unistd.h>, <sys/types.h>, <sys/stat.h>, <sys/ipc.h>, <sys/shm.h> , mkfifo(), shmget(), shmat(), shmdt(), shmctl()

  2. 若要按老师说要在 VMware 虚拟机里安装 vc++ 6.0 ?太麻烦了,既要重新认识/熟悉非主流软件,而且在 VM 里安装软件也很麻烦。

  3. 按照 AI 和论坛大佬们的说法,vscode + wsl 应该是最优解。

  4. 为什么要装编译器?我在 dev.6.7.5 或者 VS 里使用也没见需要安装?这是因为 dev.6.7.5 或者 VS 自带了编译器。dev 之所以轻量,可以理解为只是给 GCC/G++ 套了个可视化窗口。

  5. vscode + wsl 方案的好处:一是提供了 Linux 环境,二是安装 c/c++ 编译器的过程极其简单,一条命令即可。

安装 c/c++ 编译器

先在 wsl 执行一下的命令查看是否存在编译器,有版本号输出即可。(注意不是在 cmd 或者 PoweShell 里执行)

1
2
gcc --version
g++ --version

383fec22e3ef152f0ca62388798407f9.gif

若不存在编译器,执行以下命令。build-essential 这个包会一次性装好 gcc、g++、make 这些常用编译工具。

1
2
sudo apt update  
sudo apt install build-essential -y

再次验证 gcc --versiong++ --version 并且退出vscode重新进去即可。


此外,若不是 Debin 系的发行版,包管理器的命令是不一样的,这里也列出:

发行版 包管理器 安装 gcc/g++ 命令
Ubuntu / Debian apt sudo apt install build-essential
Arch Linux pacman sudo pacman -S base-devel gcc
Fedora dnf sudo dnf install gcc gcc-c++ make
CentOS / Rocky Linux yum / dnf sudo yum install gcc gcc-c++ make
openSUSE zypper sudo zypper install gcc gcc-c++ make
Alpine Linux apk sudo apk add build-base

编译与执行

1
2
3
gcc <文件名.c> -o <自定义编译产物的名称>    # c文件用这个
# 或
g++ <文件名.cpp> -o <自定义编译产物的名称> # cpp文件用这个

其中的 -ooutput 的缩写,作用是:指定编译后生成的可执行文件的名称。如果不指定 -o 参数,编译产物的名称默认是 a.out

编译完成后用 ./xxx 执行,xxx 是 -o 参数后面的名字。
20260518-1341-18.3164390.gif

一定要先在 vscode 的终端里用 cd 命令切换到你存放文件的目录下,否则会报错:

Warning

fatal error: xxx.cpp: No such file or directory

要么就在编译时指定正确的路径,例如:如果现在在家目录,而c/c++ 文件都放在了家目录下的 作业 文件夹里,则:

编译:gcc ./作业/xxx.c -o xxx
执行:./作业/xxx

Tip

  • 家目录指:/home/<用户名> ,识别符是 ~ ,通过 cd ~ 可快速回家。
  • 跟 Windows 的 C 盘下的 用户\<用户名> 是类似意思。