赞
踩
1.WSL2需要启用windows功能中的虚拟机平台和适用于Linux的Windows子系统.以直接使用Windows+R快捷键,在打开的「运行」窗口中直接执行optionalfeatures打开「Windows 功能」,或者在控制面板中打开「Windows 功能」启用需要的功能,然后重新启动
2.进入cmd, 输入
wsl --set-default-version version # version为1或2,代表wsl的版本·
- 1
- 2
3.验证成功输入wsl --update 更新
安装镜像有两种选择
(1)打开cmd,输入wsl --list --online , 不过我这里可能网络原因, 显示无法连接
(2) windows 商店下载相应的ubuntu 镜像。顺带一提:我选择的是Ubuntu20.04LTS, 和课程的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 #执行刚修改的初始化文件,使之立即生效
打开XLauch
选择OneLargeWindow
在第三步勾选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
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编译完的程序~~
(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虚拟机会一直占用本机内存~
因为我们在wsl中写cpp代码时,默认是没有代码编辑提示的,所以可以下载wsl内部的cpp插件,用于代码的编辑提示、高亮等功能
下载插件时,可能会由于网络原因,导致下载失败,可以尝试科学上网方式进行下载~
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。