1.WSL2需要启用windows功能中的虚拟机平台和适用于Linux的Windows子系统.以直接使用Windows+R快捷键,在打开的「运行」窗口中直接执行optionalfeatures打开「Windows 功能」,或者在控制面板中打开「Windows 功能」启用需要的功能,然后重新启动
2.进入cmd, 输入
wsl --set-default-version <version> # version为1或2,代表wsl的版本·
3.验证成功输入wsl --update 更新
安装镜像有两种选择
(1)打开cmd,输入wsl --list --online , 不过我这里可能网络原因, 显示无法连接
(2) windows 商店下载相应的ubuntu 镜像。顺带一提:我选择的是Ubuntu18.04.5LTS, 和课程的Ubuntu虚拟硬盘版本相近~~
安装完成后就可以登录ubuntu创建相应用户~
安装windows的VcXsrv , 下载网址是 https://sourceforge.net/projects/vcxsrv/
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
配置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
#执行刚修改的初始化文件,使之立即生效
在第三步勾选Disable client access, 否则会导致协议无效
5. 打开wsl, 输入
startxfce4 #即可看到可视化界面了~
由于题主使用的是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 .
然后就可以进行相应的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
2. 下载opencv源码
https://www.raoyunsoft.com/wordpress/index.php/2020/03/09/opencvdownload/
我下载的是带zip格式的~
3.在适当位置解压文件
sudo unzip XXX.zip
4.在解压文件夹下构建build文件夹,进入,cmake, make
sudo mkdir build
cd build
sudo cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=ON -D CMAKE_INSTALL_PREFIX=/usr/local ..
#通过八线程构建, 你也可以通过修改原来的数字进行构建
sudo make -j8
sudo make install
5.配置环境变量
5.1 将库添加到系统路径
sudo vim /etc/ld.so.conf
在文件中加上一行include /usr/local/lib,因为makefile中默认opencv安装在该路径下。
然后进行更新
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
然后就可以使用了~
此时我们可以打开xlauch, 在图形化的界面中调试我们的三角形了~~
(1)首先安装主系统下的vs code, 由于流程简单,这里就不做细述
(2)打开vs code, 选择插件中心,搜索 wsl
(3)安装第一个wsl插件
(4)安装完成后, 在插件中心下方就有远程资源管理器标志了, 直接进入会弹出已识别的wsl,点击即可操作wsl~, 进入wsl找到对应的文件夹即可编辑代码~
(5)在Vscode 中编辑WSL中的代码时,可能发生用户权限问题导致无法保存,此时在作业文件夹下使用命令
sudo chmod 777 -R .
将文件夹的权限修改至任意用户都可修改即可。
由于题主目前还没有学习到课程后面的内容, 因此opengl的配置之后会慢慢更新~~
顺带一提,使用完wsl记得在cmd中执行 wsl --shutdown , 否则虚拟内存会一直占用~