Games101的windows环境下的wsl配置及vscode的远程调用

1. wsl的环境配置

(1)安装wsl

1.WSL2需要启用windows功能中的虚拟机平台和适用于Linux的Windows子系统.以直接使用Windows+R快捷键,在打开的「运行」窗口中直接执行optionalfeatures打开「Windows 功能」,或者在控制面板中打开「Windows 功能」启用需要的功能,然后重新启动

2.进入cmd, 输入

wsl --set-default-version  version
# version为1或2,代表wsl的版本·

3.验证成功输入wsl --update 更新

(2)安装ubuntu镜像

安装镜像有两种选择

(1)打开cmd,输入wsl --list --online , 不过我这里可能网络原因, 显示无法连接

(2) windows 商店下载相应的ubuntu 镜像。顺带一提:我选择的是Ubuntu20.04LTS, 和课程的Ubuntu虚拟硬盘版本相近~~

安装完成后就可以登录ubuntu创建相应用户~

(3)安装wsl图形化界面(Win11的朋友可以跳过这一小节,不用配置,我们直接执行cmake编译完的程序就可以看到OpenCV创建的窗口了~)
  1. 安装windows的VcXsrv , 下载网址是 https://sourceforge.net/projects/vcxsrv/

  2. wsl终端中安装xfce4

    #安装xfce4桌面
    sudo apt-get install xfce4 xfce4-terminal 
    #配置声明
    echo -e "\n##DISPLAY Configuration" >> ~/.bashrc 
    #添加配置
    echo "export DISPLAY=127.0.0.1:0.0" >> ~/.bashrc 
    #配置生效
    source ~/.bashrc
    
  3. 配置DISPLAY环境变量遇到的坑

由于WSL2其实是用Hyper-V技术实现的一个虚拟机,和WSL1的工作原理不一样,因此如果使用之前网上

的方法直接设置DISPLAY=:0.0的话,启动xfce4的时候会出现下面的错误:

lpwm@DESKTOP-FI0NTIP:~$ startxfce4
/usr/bin/startxfce4: X server already running on display :0.0
xrdb: Connection refused
xrdb: Can't open display ':0.0'
Unable to init server: Could not connect: Connection refused
xfce4-session: Cannot open display: .
Type 'xfce4-session --help' for usage.

正确的配置姿势

# 首先需要查看Windows系统和WSL2通信使用的虚拟网卡地址
$ sudo vim /etc/resolv.conf
# nameserver后面的地址就是Windows系统虚拟网卡的地址,记一下,同时需要取消下面两行内容的注释,禁用自动重新生成配置文件,否则重启后这个地址会变
[network]
generateResolvConf = false
 
 
$ vim ~/.bashrc
# 在文件最后追加下面内容,地址使用上面查看到的
export DISPLAY=虚拟网卡地址:0


 #由于每次电脑启动虚拟网卡ip地址都会改变,因此可以使用以下方法~
export DISPLAY=$(cat /etc/resolv.conf | grep nameserver | awk '{print $2}'):0 


$source ~/.bashrc
#执行刚修改的初始化文件,使之立即生效
  1. 打开XLauch

    选择OneLargeWindow
    在这里插入图片描述

在第三步勾选Disable client access, 否则会导致协议无效
在这里插入图片描述
5. 打开wsl, 输入

 startxfce4			#即可看到可视化界面了~

2. cmake、g++、eigen、opencv配置

由于题主使用的是linux 的 apt-get命令获取软件的下载包。故需先使用如下语句更新apt, 否则会无法完成以下环境的下载。

sudo apt-get update   

更新成功后就可以进行环境配置啦~

  • g++配置

     sudo apt-get install build-essential   # 安装g++
     g++ --version 					# 安装完成后检查版本
    
  • cmake配置

    sudo apt-get install cmake			#安装cmake
    cmake --version						#照例检查版本
    
  • eigen 配置

    sudo apt-get install libeigen3-dev
    

    这三件配置完就可以完成pa0了~

    将pa0文件夹移至你的ubuntu文件夹下

    /usr/games$ sudo cp /mnt/e/101/pa0 .  
    
    • 移至 /mnt/你的windows硬盘/pa0的文件路径
    • 我将其移至了usr的game 文件夹下,理论上只要在usr文件夹下都可以

    然后就可以进行相应的build了~

    /usr/games/pa0$ mkdir build
    /usr/games/pa0$ cd build/
    /usr/games/pa0/build$ cmake ..
    /usr/games/pa0/build$ make
    /usr/games/pa0/build$ ./Transformation
    
  • Opencv 配置

    1.安装依赖


sudo apt-get install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev
sudo apt-get install libcanberra-gtk-module
sudo apt-get install pkg-config
sudo apt-get install unzip

​ 2. 下载opencv源码

原生OpenCV代码
https://www.raoyunsoft.com/wordpress/index.php/2020/03/09/opencvdownload/
如果上面网站的资源失效或者难以下载,也可以用以下我共享的OpenCV4.6.0源码,这个OpenCV压缩包修改了它的第三方组件ippicv中的cmake文件,用于解决外网cdn不可用导致cmake编译失败的情况。
https://pan.baidu.com/s/1RGKA2aXnoVJ6UzrrSQp9qw?pwd=45nj/

​ 3.在usr/games解压OpenCV源码

cd /usr/games
sudo unzip OpenCV-XXX.zip

​ 4.在解压文件夹下构建build文件夹,进入build文件夹,在当前文件夹执行cmake命令, 再make

cd OpenCV-XXX
sudo mkdir build
cd build

#构建过程中会缺少第三方组件,因此会进行第三方组件的下载,可能会有网络原因导致下载失败,因此可以尝试科学上网或者使用我上面给的OpenCV4.6进行编译
sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local .. 

#通过16线程构建, 可以通过修改原来的数字进行构建,最高可以到CPU最大线程数
#构建可能时间有点长,所以尽量选择最大线程进行构建~
sudo make -j16	

sudo make install

​ 5.配置环境变量

​ 5.1 将库添加到系统路径

sudo vim /etc/ld.so.conf

在文件中加上一行include /usr/local/lib,因为makefile中默认opencv安装在该路径下。


#按i进入INSERT模式,右键添加include  /usr/local/lib后按ESC退出插入模式
#最后使用wq!进行保存
:wq!

然后进行更新

sudo ldconfig

此时会报下面的错, 原因是WSL构建 和其他的原生linux文件有些不同

/sbin/ldconfig.real: /usr/lib/wsl/lib/libcuda.so.1 is not a symbolic link

此时必须修改wsl配置文件

cd /usr/lib/wsl
sudo mkdir lib2
sudo ln -s lib/* lib2
sudo vim /etc/ld.so.conf.d/ld.wsl.conf
#将 /usr/lib/wsl/lib 改为 /usr/lib/wsl/lib2
测试修改是否生效
sudo ldconfig

5.2 配置 bash ,修改 bash.bashrc 文件

sudo vim /etc/bash.bashrc

shift+g跳到末尾添加下面两行

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

保存退出,再source一下,用于保存环境变量

source /etc/bash.bashrc

到此为止环境就配置完毕,可以使用了~

如果是Win10环境,我们可以打开xlauch, 在图形化的界面中调试我们的三角形了~~
在这里插入图片描述

此时如果是Win11环境,我们可以直接运行cmake编译完的程序~~

3.vs code远程连接wsl

(1)首先安装主系统下的vs code, 由于流程简单,这里就不做细述

(2)打开vs code, 选择插件中心,搜索 wsl

在这里插入图片描述

(3)安装第一个wsl插件

在这里插入图片描述

(4)安装完成后, 在插件中心下方就有远程资源管理器标志了, 直接进入会弹出已识别的wsl,点击即可操作wsl~, 进入wsl找到对应的文件夹即可编辑代码~

在这里插入图片描述
(5)在Vscode 中编辑WSL中的代码时,可能发生用户权限问题导致无法保存,此时在作业文件夹下使用命令

sudo chmod 777 -R .

将文件夹的权限修改至任意用户都可修改即可。

顺带一提,使用完wsl记得在cmd中执行 wsl --shutdown , 否则wsl2虚拟机会一直占用本机内存~

4. wsl内部的cpp插件配置

因为我们在wsl中写cpp代码时,默认是没有代码编辑提示的,所以可以下载wsl内部的cpp插件,用于代码的编辑提示、高亮等功能

在这里插入图片描述

下载插件时,可能会由于网络原因,导致下载失败,可以尝试科学上网方式进行下载~
Logo

更多推荐