WSL-Ubuntu20.04部署环境配置

1.更换Ubuntu软件仓库镜像源

为了在WSL上使用TensorRT进行推理加速,需要安装以下环境,下面将按以下顺序分别介绍安装、验证以及删除环境:

python 复制代码
#1.C++环境配置
gcc、gdb、g++
#2.gpu环境
cuda、cudnn
#3.Cmake环境
CMake
#4.OpenCV环境
OpenCV
#5.TensorRT环境
TensorRT

在安装这些库之前,需要先更换清华镜像,可以加速Ubuntu下载速度,使用指令lsb_release -a查看Linux 发行版的信息,如下所示:

其中关注一下Codename:focal ,参照博客WSL不同版本的Ubuntu更换清华镜像-CSDN博客,如果是focal的话,则修改镜像源为下面内容,如果是其他的codename的话,需要将https://mirrors.tuna.tsinghua.edu.cn/ubuntu,后面的focal修改为对应的内容,比如还可能是jammy、lunar、kinetic和bionic。

python 复制代码
# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ focal-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-proposed main restricted universe multiverse

现在来看一下如何修改,分成两个步骤,第一:备份该配置文件,避免镜像替换后不可用,还可以恢复到原始版本;第二:修改镜像源。

首先来看备份配置文件:配置文件放在/etc/apt路径下,执行以下指令备份配置文件sources.list.

python 复制代码
 cp sources.list sources.list.bak

然后修改镜像源,执行以下指令:

python 复制代码
vim source.list

最后把前面的镜像源地址复制进去,然后在一般模式下使用:wq,保存并退出,如下所示:

2.C++环境配置

安装:

python 复制代码
sudo apt update
sudo apt install build-essential

验证:

python 复制代码
gcc --version

3.CUDA和CUDNN安装

前面也提到了wsl-ubuntu20.04的显卡驱动和本机的显卡驱动是一样的,再利用nvidia-smi查看下显卡驱动版本,再决定安装什么版本的CUDA和cuDNN.

显卡驱动版本号为12.2,可以理解为可以支持的CUDA最大版本号,但是我们也不需要安装那么高的CUDA,可以选择一个稳定点的比如CUDA11.6.

3.1CUDA-11.6安装

CUDA下载:CUDA Toolkit Archive | NVIDIA Developer,选择cuda11.6下载,如下所示。

安装: 接下来执行以下指令来进行安装;

python 复制代码
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-wsl-ubuntu.pin
sudo mv cuda-wsl-ubuntu.pin /etc/apt/preferences.d/cuda-repository-pin-600
wget https://developer.download.nvidia.com/compute/cuda/11.6.0/local_installers/cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
sudo dpkg -i cuda-repo-wsl-ubuntu-11-6-local_11.6.0-1_amd64.deb
sudo apt-key add /var/cuda-repo-wsl-ubuntu-11-6-local/7fa2af80.pub
sudo apt-get update
sudo apt-get -y install cuda

以上的指令分别代表:(1)下载 cuda-wsl-ubuntu.pin 文件;(2)移动 cuda-wsl-ubuntu.pin 文件到 /etc/apt/preferences.d/ 目录;(3)下载 CUDA 11.6 的本地安装包;(4)安装 CUDA 仓库包;(5)添加 CUDA 仓库的公钥;(6)更新包列表;(7)安装 CUDA。

其中第三步中,如果网络不顺畅的话可以直接复制链接到浏览器中进行下载,然后再放到你的安装路径下,我这里直接是放在/root路径下,然后继续执行后面的步骤。

验证:

CUDA默认安装在/usr/local路径下,进入到该路径下,其中cuda-11.6文件夹即为安装好的cuda,里面会包含有bin、lib及include文件,其中nvcc指令在bin路径下,即/usr/local/cuda-11.6/bin.

下面需要把bin路径下的常用指令添加在home/.bashrc环境变量文件中,然后再使用nvcc -V来验证cuda是否安装成功:

首先使用下面指令打开.bashrc:

python 复制代码
vim ~/.bashrc

然后直接在最后一行插入下面代码,指示了cuda-11.6的路径:

python 复制代码
export CUDA_HOME=/usr/local/cuda-11.6  # 新建环境变量CUDA_HOME
export PATH=$PATH:$CUDA_HOME/bin       # 将bin目录添加到PATH这个环境变量

最后执行下面指令来验证cuda是否已经安装成功:

python 复制代码
source ~/.bashrc 
nvcc -V

3.2cuDNN-8.9.5安装

cuDNN下载:链接,我这里选择符合版本要求的v8.9.5,选择Linux_x86_64(Tar)下载。

我这里选择把下载好的文件放在/root路径下,如下所示:

安装: 首先解压得到lib和include文件夹,然后将解压后的文件夹分别复制到前面的cuda-11.6里面对应的lib64和include路径下,指令如下所示:

python 复制代码
tar -xvf cudnn-linux-x86_64-8.9.5.30_cuda11-archive.tar.xz
cd cudnn-linux-x86_64-8.9.5.30_cuda11-archive/ #进入解压路径
cp ./lib/* /usr/local/cuda-11.6/lib64          # 拷贝lib
cp ./include/* /usr/local/cuda-11.6/include    # 拷贝头文件

验证: 执行以下指令,显示如下内容说明cuDNN安装成功。

python 复制代码
cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2

4.CMake-3.30.0安装

CMake下载:Download CMake,这里我选择的是3.30.0版本进行下载,下载得到cmake-3.30.0.tar.gz压缩包,然后找个路径进行解压,如下所示:

安装:

首先将cmake-3.30.0.tar.gz这个压缩包放在/root路径下,使用以下指令来解压缩cmake包.

python 复制代码
tar -zxvf cmake-3.30.0.tar.gz

然后进入解压后的文件夹,进行编译和安装,其中make -j4中的-j4表示使用4个进程,可以提升生成的速度:

python 复制代码
cd cmake-3.30.0/
./bootstrap
make -j4
make install 

问题: 我在执行./bootstrap遇到了Error:Could not find OpenSSL,如下所示:

解决: 那么需要安装libssl-dev,然后重新再执行一遍./bootstrap指令,执行成功后是下面这样子的.

python 复制代码
sudo apt-get install libssl-dev

验证: 执行以下指令,查看Cmake版本及Cmake位置,没有问题的话说明Cmake安装成功了。

python 复制代码
cmake --version
which cmake

5.OpenCV-4.8安装

OpenCV下载:Releases - OpenCV,这里我选择一年前发布的OpenCV-4.8,点击sources,下载得到opencv-4.8.0.zip压缩包,然后找个路径进行解压,如下所示:

安装:

第一步:把opencv-4.8.0.zip这个压缩包放在/root路径下,使用unzip指令来解压缩opencv包.

python 复制代码
unzip opencv-4.8.0.zip

第二步:进入opencv路径,创建build文件,用来保存编译的文件。

python 复制代码
cd opencv-4.8.0/
mkdir build
cd build

第三步:依次执行以下指令,使用CMake来配置、生成和安装OpenCV,其中make生成这一步的时间稍微会长一点,大概15分钟左右,可以在make后面加入-j4来加快生成,其中4指同时使用4个进程。

python 复制代码
cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..
make -j4
make install

问题: 我在执行make -j4指令的时候,报错fatal error: openjpeg.h: No such file or directory,那么需要安装libopenjp2-7-dev。

解决: 如果你和我遇到了一样的问题,那么安装完之后为了保险起见,需要删除build文件夹,重新配置生成,即重新执行第二步和第三步的指令。

python 复制代码
apt-get install libopenjp2-7-dev

验证:

安装完OpenCV后需要知道OpenCV的bin、lib及include文件放在哪个路径下:

其中include 头文件放在路径下:/usr/local/include/opencv4/opencv2;bin 文件放在路径下:/usr/local/bin;lib文件放在路径下:/usr/local/lib.

下面来验证OpenCV是否安装成功,由于我们不是在ubuntu主机上操作,而是相当于链接一个远程主机,所以使用imshow报错是很正常的,如下所示,但是我们不需要imshow函数,只需要用到opencv来处理图片,所以我需要修改一下样例的代码。

首先时进入到一开始解压缩的文件夹中,并使用vim来编辑一下代码,只需要把imshow修改为imwrite,并且注释掉waitKey(0)代码即可,如下所示。

python 复制代码
cd /root/opencv-4.8.0/samples/cpp/example_cmake
vim  example.cpp

然后再执行以下指令编译和生成可执行文件,如下所示.

python 复制代码
cmake -S . -B build
cmake --build build

最后运行可执行文件,发现在当前路径下会生成一个Sample.jpg的图片,显示如下则说明安装成功了(查看图片可以直接通过\wsl.localhost\Ubuntu-2004\root\opencv-4.8.0\samples\cpp\example_cmake路径,在window上直接查看):

python 复制代码
./build/opencv_example 

6.TensorRT-8.5安装

TensorRT下载:NVIDIA TensorRT 8.x Download | NVIDIA Developer,EA 版本代表抢先体验,而GA 代表通用性,表示稳定版,所以我们还是下载TensorRT8.5GA稳定版的,

安装:

第一步:把TensorRT-8.5.1.7.Linux.x86_64-gnu.cuda-11.8.cudnn8.6.tar.gz这个压缩包放在/root路径下,解压缩TensorRT包.

python 复制代码
 tar -zxvf TensorRT-8.5.1.7.Linux.x86_64-gnu.cuda-11.8.cudnn8.6.tar.gz

第二步: 将TensorRT/lib的绝对路径添加到在home/.bashrc环境变量文件中.

首先使用以下指令打开.bashrc.

python 复制代码
vim ~/.bashrc

然后添加以下代码到文件中,如下所示:

python 复制代码
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/root/TensorRT-8.5.1.7/lib

最后使用以下指令更新一下:

python 复制代码
source ~/.bashrc

验证:

第一步:进入到/root/TensorRT-8.5.1.7/samples/sampleOnnxMNIST路径下.

python 复制代码
cd /root/TensorRT-8.5.1.7/samples/sampleOnnxMNIST

第二步:编译并执行可执行文件,如下所示即安装成功。

python 复制代码
make
../../targets/x86_64-linux-gnu/bin/sample_onnx_mnist
相关推荐
njsgcs21 天前
wsl 可以直接打开windows的应用 /mnt/d/blender/blender.exe
wsl
shimly12345621 天前
windows11 WSL 安装 Ubuntu 24.04
wsl
fireworkseasycold22 天前
windows与WSL 端口转发(保留 NAT,如果不切换到 Mirrored 网络模式(需要重启 WSL,可能改变子网行为))
wsl·代理
三雷科技25 天前
WSL 命令大全(完全指南)
虚拟化·wsl·windows虚拟机
z.q.xiao1 个月前
【镜像模式】WSL如何访问windows内网服务
linux·网络·windows·gitlab·wsl·dns
njsgcs1 个月前
ModelScope下载模型+ vLLM调用+内存释放
windows·wsl·vllm
Android小码家2 个月前
WSL+llama+CPU本地模型部署
llama·wsl·模型
liulilittle2 个月前
Windows WSL部署Ubuntu子系统到其它磁盘上
linux·运维·服务器·网络·windows·ubuntu·wsl
jessezappy2 个月前
记录:老电脑安装 Docker 4.40 不支持 WSL 2 时这样处理
docker·容器·wsl·硬件不支持·i5-3470
胡斌附体2 个月前
wsl无法使用window代理访问ssh的问题处理
ssh·wsl·代理·密钥·ssh代理