0


Ubuntu20.04软件安装大全

目录

Ubuntu20.04 软件安装大全

前言

最近在自己主机上安装了双系统,记录下自己在Ubuntu20.04系统中安装的软件及遇到的问题,方便下次查看,安装的软件大多是跟深度学习相关的以及个人平时习惯使用的,仅供自己参考
这里分享下博主安装过程中的软件安装包下载链接[pwd:yolo]🚀🚀🚀

1. Windows和Ubuntu双系统安装

参考自UP主机器人工匠阿杰的Windows和Ubuntu双系统的安装和卸载

描述:安装流程非常详细,UP主演示的是笔记本,而博主是主机,在BIOS界面相差较大,安装完成后存在一个小bug,但不影响使用。下面只说下流程中博主操作不同的地方,大家务必根据自己的实际情况来

1.1 下载Ubuntu系统镜像

博主并没有选择从Ubuntu官网下载,而是选择从清华大学开源软件镜像站下载,不用访问外网,速度快。清华大学开源镜像站Ubuntu-releases网址:https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/

选择你想要安装的Ubuntu版本(比如20.04),点击下载

.iso

为结尾的蓝色字体即可(比如ubuntu-20.04.6-desktop-amd64.iso)

如果不会操作的可查看这篇Ubuntu系统下载(清华大学开源软件镜像战)博客的图文描述

1.2 磁盘分区

博主选择的是分区方案一,将/home挂载节点和/根挂载节点分开。

博主有两块硬盘,一个3TB的机械和一个1TB的的固态,我从机械硬盘中压缩了500GB的空间(即512,000MB)和固态硬盘中压缩了250GB的空间(即256,000MB),我将固态硬盘的250个GB用做引导区、内存交换分区以及/根挂载节点,将500GB的空间用做/home挂载点(主要我感觉/根挂载节点像系统盘,所以分配的是固态,而/home挂载点像非系统盘,所以分配的是机械)

博主分区秉承一个原则,能多分就多分,所以和UP主的分配不同(根据自己实际情况来)。具体如下:
分区大小引导区5GB(5,120MB)内存交换分区40GB(40,960MB)/根挂载节点205GB(209,920MB)/home挂载节点500GB(512,000MB)

1.3 GPT分区安装Ubuntu

博主是微星主板(F11按键进入启动选项),按键盘的Delete按键进入BIOS,在BIOS中修改两个地方,一个是将修改启动项目让U盘作为启动项,一个是关闭安全引导

  • 在BIOS的主界面中,有一个Boot Priority,可以看到有一个USB和一个硬盘图标是亮着的,将亮着的USB拖到最前面即可
  • 可以参考UP主硬件茶谈的WIN10系统安装教程,将U盘作为启动项
  • 在BIOS的主界面中,有一个SETTINGS,点击进去,选择安全,选择安全启动,禁止。(BIOS中的安全引导一定要关闭,不然后续显卡驱动无法安装)
  • 退出保存更改即可

1.4 系统完成后的一些设置

启动菜单的默认项

博主并没有选择设置

时间同步

打开一个终端,执行如下指令:

sudoaptinstall ntpdate
sudo ntpdate time.windows.com
sudo hwclock --localtime--systohc

1.5 遇到的一些小bug

在博主使用的过程中主要存在两个bug

bug1:Ubuntu重启后无法进入到grud的选择界面,直接进到Ubuntu界面,但是关机再开机可以

解决方案:在Ubuntu中打开grub,将Timeout时间修改为20,具体指令如下:

sudo gedit /etc/default/grub

将第8行的

GRUB_TIMEOUT

修改为20

GRUB_TIMEOUT=20

保存并退出,更新配置,指令如下:

sudoupdate-grub

重启后即可进入到grub界面

bug2:Ubuntu重启后分辨率偶尔会变得非常小,图标变得非常大

解决方案:未解决,只能通过重启

2. 换源

参考自Ubuntu配置apt安装源为清华源、Linux下配置pip为国内清华源

描述:安装软件时最好先进行换源,确保后续软件在下载过程中不会存在网络问题,apt换源博主是直接在Ubuntu的设置中完成的,也可以按照上面的方式进行修改,配置流程按照上文走没有问题,下面简单过一遍

2.1 apt换源

点击系统中的设置(Settings),点击最下面的关于(About),点击Software Updates

在第一栏Ubuntu Software页面中,前四个main,universe,restricted,multiverse都打勾上,找到Download from,选择=>Others=>China=>mirrors.aliyun.com(阿里源)或者mirrors.tuna.tsinghua.edu.cn(清华源),点击确认,输入自己的密码,完成。

在这里插入图片描述

换源成功后打开终端,执行如下语句:

cat /etc/apt/sources.list

在终端上会打印apt的源,可以看到原始的Ubutnu的源会被替换成之前选择的阿里源或者清华源

2.2 pip换源

首先打开终端使用小写的

ll

查看所有隐藏文件夹和文件,看是否存在**.pip**文件夹,如果没有,则使用下面命令创建:

mkdir .pip
cd .pip/

然后通过

vim pip.conf

创建配置文件,指令如下:

sudovim pip.conf

添加如下内容(这里添加清华源,其他的也可以)

[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple

最后Esc,:wq保存并退出,结束配置

3. 显卡驱动安装

参考自:拯救者Y9000K2021H在ubuntu18.04安装显卡驱动、Ubuntu卸载Nvidia驱动和安装最新驱动

描述:显卡驱动安装主要参考文章1,流程按照上面走没有问题,博主显卡为RTX3060,切记在安装显卡驱动的时候要在BIOS中将安全启动关闭,具体操作可看1.3小节内容

3.1 卸载显卡驱动

进行该步目的是防止系统中已经存在旧版本的驱动,或者存在没有完全安装成功的驱动。

在终端输入如下指令:

sudoapt-get purge nvidia*

3.2 准备工作

点击系统中的设置(Settings),点击最下面的关于(About),点击Software Updates

  • 在第一栏Ubuntu Software页面中,前四个main,universe,restricted,multiverse都打上勾,找到Download from,选择=>Others=>China=>mirrors.aliyun.com,点击确认,输入自己的密码,完成。(该步主要是换源,和之前的apt换源一致)
  • 在第二栏Other Software页面中,将Canonical Partners勾选上
  • 在第三栏Updates页面中,将Automatic check for updates修改为Never

3.3 驱动安装

本次采用的方式是使用图形驱动程序PPA存储库完成NVIDIA驱动程序的快捷安装工作。

1.将ppa存储库添加到当前系统当中,指令如下:

sudo add-apt-repository ppa:graphics-drivers/ppa

2.更新软件列表,指令如下:

sudoapt-get update

3.查看检测到的驱动程序,指令如下,推荐下载带有recommended标志的驱动

sudo ubuntu-drivers devices

4.根据第3步检测到的驱动,选择一个合适的版本号(博主选择的是510),安装指令如下:

sudoaptinstall nvidia-driver-510

执行完成之后执行命令sudo reboot重启

3.4 验证

重新启动之后在命令输入

nvidia-smi

,如果出现对应的驱动版本和CUDA版本说明安装成功。

同时可以点击设置(Settings),点击最下面的关于(About),查看下Graphics这一栏是否已经变为NVIDIA Corporation,如果是,代表安装全部完成。

4. VScode安装

描述:Ubuntu20.04安装VScode较简单,按照下面步骤来就行

4.1 安装包下载

去官网选择Ubuntu的.deb包下载即可,外网下载慢,需要代理,大家可以在Windows下面通过代理下载好后传到Ubuntu下面。

VScode官网下载链接:https://code.visualstudio.com/Download

先cd到安装包路径下,然后进行安装即可,指令如下:

cd Downloads
sudoapt get install ./code_1.77.3-1681292746_amd64.deb
sudo dpkg -i ./code_1.77.3-1681292746_amd64.deb

4.2 插件下载

大家根据自己的需求来就行,下面是博主下载的一些插件

  • Chinese(Simplified):中文简体
  • python:Python语言扩展
  • C/C++:C/C++语言扩展
  • Remote Development:远程SSH
  • vscode-cudacpp:CUDA扩展
  • CMake Tools:CMakeLists.txt扩展

4.3 常用设置

通过Ctrl+鼠标滚动改变字体大小

打开设置 => 输入"editor.mouseWheelZoom" => 勾选上

5. 百度网盘安装

描述:经常需要将Windows和Ubuntu的文档相互传递,通过U盘有时候不方便,还是选择安装个百度网盘,安装流程较简单,按照下面的步骤就行

去官网选择Linux的.deb包下载即可

百度网盘官网下载链接:https://pan.baidu.com/download#linux

先cd到安装包路径下,然后进行安装即可,指令如下:

cd Downloads
sudo dpkg -i ./baidunetdisk_4.17.7_amd64.deb

6. Google Chrome安装

参考自如何在 Ubuntu 20.04 上安装 Google Chrome 网络浏览器

描述:博主习惯使用Chrome浏览器,有时候可以打开一些关闭的标签页,有时可以收藏一些标签等比较方便的功能,安装流程按上面的文章走即可,下面简单过一遍

6.1 安装包下载

进入官网,点击下载Chrome,选择64位.deb(适用于Debian/Ubuntu)

Google Chrome官网下载链接:https://www.google.cn/intl/zh-CN/chrome/

先cd到安装包路径下,然后进行安装即可,指令如下:

sudoaptinstall ./google-chrome-stable_current_amd64.deb

6.2 常用设置

Chrome标签页设置

添加的标签页并没有在菜单栏中显示,可根据下面的方法修改

点击右上角的三个点,选择Booksarks,点击Show bookmarks bars即可

搜索引擎选择设置

每次搜索的时候,默认使用Google搜索引擎,由于没有代理,所以无法使用,修改为bing,修改方法如下

点击右上角的三个点,选择Settings,选择Search engine,将Google选项修改为Bing

简体中文设置

未解决

博主尝试选择Settings中的Languages,在Preferred languages中Add languages添加简体中文,并Move to the top,然而并不管用

7. 截图工具安装

参考自snipaste替代品 & Linux截图解决方案-截图、贴图工具Flameshot

描述:在记录问题时经常需要截图,而Windows的截图贴图神器snipaste在Linux下并不支持,所以找了一个替代品Flameshot,安装流程可按照上面的文章走,下面简单介绍下

7.1 安装

Ubuntu下安装非常简单,打开终端执行如下指令:

sudoaptinstall flameshot

7.2 配置

在Show Application中找到flameshot,点击图标打开(打开后右上角会出现对应小图标),点击小图标,选择Configuration配置,大家按照上文的说明和自己喜好自行配置即可

博主在General选项中,关闭了

show help message

帮助信息并打开了

Launch at startup

开机自启动选项。

7.3 设置快捷方式

将截图局部快捷键设置为

ctrl+alt+a

在Settings => Keyboard Shorcuts中,点击最下方的加号,添加Custom Shortcus(自定义快捷键)

  • 1.快捷键名词(Name):自定义即可
  • 2.命令(Command):如下,–path后面跟的是保存的截图路径flameshot gui --path /home/jarvis/Pictures/Screenshots
  • 3.快捷键(Shortcut):将局部截图快捷键设置为ctrl+alt+a

8. Typora安装

参考自Linux免费安装Typora

描述:经常需要记录一些问题,非常喜欢Typora这款Markdown编辑器,可以选择去官网下载最新版本并购买激活,博主这里使用的是老版本免费的Typora,够用了,安装流程按照上文走就行,这里主要介绍下主题和个人的一些设置

8.1 vim安装

vim安装指令如下:

sudoapt-get update

sudoapt-getinstallvim

8.2 Typora安装

将安装包下载好后,cd到安装包目录下进行安装,指令如下:

cd Downloads
tar xzvf Typora-linux-x64.tar.gz 
cd bin
sudocp-ar Typora-linux-x64 /opt
cd /opt/Typora-linux-x64/
#启动
./Typora

为了在任意位置启动,我们设置下环境变量

sudovim ~/.bashrc

打开.bashrc配置文件,添加:

#Typora环境变量exportPATH=$PATH:/opt/Typora-linux-x64

source一下,让配置生效

source ~/.bashrc

OK了,可以在任意位置启动typora

./Typora

添加桌面快捷方式

cd /usr/share/applications
sudovim typora.desktop

添加以下内容:

[Desktop Entry]Name=Typora
Comment=Typora
Exec=/opt/Typora-linux-x64/Typora
Icon=/opt/Typora-linux-x64/resources/app/asserts/icon/icon_256x256.png
Terminal=false
Type=Application
Categories=Developer;

重启电脑就ok了

右键打开

sudo gedit ~/.config/mimeapps.list

添加如下内容:

text/markdown=typora.desktop

8.3 偏好设置

有一些设置可以根据个人习惯调整

  • 1.语言设置 - File(文件) => Preference(偏好设置) => General(通用) => Language(语言) => 简体中文- 重启Typora
  • 2.状态栏显示 - 文件 => 外观 => 状态栏 => 显示状态栏(勾选上)- 文件 => 外观 => 侧边栏 => 侧边栏的大纲视图允许折叠和展开(勾选上)
  • 3.拼写检查 - 文件 => 编辑器 => 拼写检查 => 不使用拼写检查
  • 4.Markdown - 文件 => Markdown => Markdown 扩展语法(全勾选上)- 文件 => Markdown => 代码块 => 显示行号(勾选上)- 重启Typora

8.4 主题

下载

主题下载自https://github.com/liangjingkanji/DrakeTyporaTheme

主题使用

  • 通过文件 => 偏好设置 => 外观 => 主题 => 打开主题文件夹 打开theme目录
  • 下载好的压缩包解压后将目录内的所有文件复制到theme目录
  • 重启Typora,选择菜单栏 => 主题即可

字体大小设置

  • 通过文件 => 偏好设置 => 外观 => 主题 => 打开主题文件夹 打开theme目录
  • 在theme目录中找到drake文件夹下的font.css用于配置自定义字体
  • 在font.css最后有字体大小、行间距等配置,根据自己喜好设置即可
  • 博主在这里将–text-size大小 由12px修改为18px
  • 重启Typora

9. Pycharm安装

参考自ubuntu20.04安装Pycharm2021

描述:Pycharm安装较简单,按照上文的步骤就行

9.1 安装包下载

进入Pycharm官网下载Linux版本社区版本的.tar.gz压缩包

Pyacharm官网下载链接:https://www.jetbrains.com/pycharm/download/#section=linux

先cd进入到安装包目录,先解压,指令如下:

cd Downloads
tar-xzf pycharm-community-2023.1.tar.gz

创建文件夹

sudomkdir /opt/pycharm

移动文件夹

cd download
sudomv pycharm-community-2023.1.tar.gz /opt/pycharm

安装

sh /opt/pycharm/pycharm-community-2023.1.tar.gz/bin/pycharm.sh

I confirm that I have read and ...

勾选上,点击continue即可

创建桌面图标

点击右下角的设置,点击Create Desktop Entry创建桌面图标

10. Anaconda安装

参考自从零开始搭建深度学习环境:CUDA+Pyotrch+Anaconda+VScode

描述:Anaconda安装较简单,按照上面视频的步骤就行,下面简单过一遍

10.1 安装包下载

进入Anaconda官网下载Linux版本社区版本的.sh文件

Anaconda官网下载链接:https://www.anaconda.com/products/distribution#Downloads

首先cd到安装包目录下,然后安装,指令如下:

cd Downloads
bash Anaconda3-2023.03-Linux-x86_64.sh

添加环境变量

sudo gedit ~/.bashrc

末尾添加(xxx修改为你的用户名)

exportPATH="/home/xxx/anaconda3/bin:$PATH"

source

source ~/.bashrc

10.2 首次激活环境遇到的问题

但你执行

conda activate base

会出现如下错误:

CommandNotFoundError: Your shell has not been properly configured to use 'conda activate'.
To initialize your shell, run

    $ conda init <SHELL_NAME>

Currently supported shells are:
  - bash
  - fish
  - tcsh
  - xonsh
  - zsh
  - powershell

See 'conda init --help'formore information and options.

IMPORTANT: You may need to close and restart your shell after running 'conda init'.

原因在于当前使用的shell没有配置好conda activate

需要先使用

conda init shell

初始化,然后就可以正常使用了,如下所示:

conda init shell

关闭终端重新打开即可

10.3 conda常用指令

conda info --envs                    // 查看当前环境
conda create -n myenv python=3.7    // 创建新环境
conda activate myenv                // 激活环境
conda clean -a                        // 清除无用包
pip list                            // 查看已安装的包(只有当前虚拟环境的包)
conda list                            // 查看已安装的包(除了当前虚拟环境下的,还有关联环境的包)
pip install numpy                    // 安装numpy
python                                // 检查安装的numpy
>>>import numpy as np

10.4 conda换源

利用 conda 指令创建虚拟环境或者安装第三方库时默认是访问外网的源,非常慢,因此我们有必要将其替换为国内源来提高速度

copy自:linux中anaconda更换源

1. 查看现有 conda 源,在终端输入如下命令:

conda info

可以看到 conda 默认使用的源,如下图所示:

在这里插入图片描述

2. 检查 home 目录下是否存在 .condarc 文件

3. 如果没有 2 中所述文件,那么执行如下命令:

conda config --set show_channel_urls yes

4. 再次检查 home 目录下是否有 2 中所述文件,可以发现此时已经有了该文件

5. 打开 2 中所述文件,添加如下内容:

default_channels:
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
  - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud

6. 保存并退出

7. 再次执行步骤 1 查看 conda 源,如下图所示,可以看到已经切换为清华源了

在这里插入图片描述

8. 执行如下命令来清楚 conda 的缓存:

conda clean -i

9. 至此 conda 国内源设置完成,现在可以愉快的使用 conda 创建虚拟环境和安装软件了😄

11. Netron安装

参考自如何在Linux上快速使用Netron模型可视化工具

描述:经常需要查看ONNX网络结构,安装非常简单,使用有点麻烦

去Github下载对应的Linux版本,后缀为.AppImage文件

GitHub链接:https://github.com/lutzroeder/netron

将下载好的AppImage文件赋予权限并直接运行

chmod a+x Netron-5.5.3.AppImage
./Netron-5.5.3.AppImage

它并不能像Windows一样直接点开ONNX模型,必须先进入对应的目录在终端执行

./Netron-5.5.3.AppImage

,然后将对应的ONNX模型直接拖过来就行。

12. 编译OpenCV4.6.0

参考自Ubuntu 20.04搭建OpenCV 4.5.0 & C++环境、Ubuntu 安装 OpenCV 4.5.5、关于安装opencv编译报错:runtime library * hidden by 等若干问题、cmake编译出错hidden by files

描述:注意!!!如果你在编译opencv之前安装了annaconda,请先看问题解决(与Anaconda冲突),除了上述冲突问题之外,没有其他问题,按照上文的操作即可。博主主要参考上文1中的opencv安装(即前3项)以及上文2中的opencv环境配置和验证。下面简单过一遍整个编译流程

12.1 安装依赖项

1.安装g++,cmake,make,wget,unzip,若已安装,此步跳过

sudoaptinstall g++
sudoaptinstall cmake
sudoaptinstallmakesudoaptinstallwgetunzip

2.安装opencv依赖的库

sudoapt-getinstall build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

3.安装一些可选的库

# python3支持(首次安装了python的库,但make报错了,之后删了这两个库,若不使用python,建议不安装)sudoaptinstall python3-dev python3-numpy
# streamer支持sudoaptinstall libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
# 可选的依赖sudoaptinstall libpng-dev libopenexr-dev libtiff-dev libwebp-dev

12.2 下载OpenCV 4.6.0源文件

可以在官网下载相应版本的OpenCV,主要有Source和GitHub两种方式下载

1.Source:https://opencv.org/releases/

点击Source进行下载,外网访问慢,可在Windows下通过代理下载后传到Linux;也可通过我一开始提供的下载链接进行下载

2.Github下载方式:

# 安装4.6.0版本wget-O opencv.zip https://github.com/opencv/opencv/archive/4.6.0.zip
# 安装最新版本wget-O opencv.zip https://github.com/opencv/opencv/archive/master.zip

下载完成后,解压到主目录,将解压后的文件重命名为opencv

12.3 Cmake配置和编译OpenCV

1.在主目录下打开终端

2.进入到下载好的opencv目录,新建并进入目录build

cd opencv
mkdir build
cd build

3.使用cmake配置opencv

cmake -DCMAKE_BUILD_TYPE=Release -DOPENCV_GENERATE_PKGCONFIG=YES ..

4.用make进行编译

make-j24

5.用make安装

sudomakeinstall

默认安装路径如下

  • /usr/local/bin - executable files
  • /usr/local/bin - libraries (.so)
  • /usr/local/cmake/opencv4 - cmake package
  • /usr/local/include/opencv4 - headers
  • /usr/local/share/opencv4 - other files (e.g. trained cascades in XML format)

12.4 环境配置

动态库配置

sudo gedit /etc/ld.so.conf.d/opencv.conf

添加

/usr/local/lib

保存后,终端内执行

sudo ldconfig 

更新PKG_CONFIG_PATH

sudo gedit /etc/bash.bashrc

文末添加

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

保存后,终端执行

source /etc/bash.bashrc
sudo updatedb

若出现

sudo: updatedb: command not found

,执行

sudo apt install mlocate

后再次操作即可。

12.5 验证

pkg-config

在终端输入如下指令,会显示对应的opencv版本4.6.0

pkg-config --modversion opencv4

程序验证,代码如下

test.cpp

#include<iostream>#include<opencv2/core.hpp>#include<opencv2/imgcodecs.hpp>#include<opencv2/highgui.hpp>usingnamespace cv;usingnamespace std;/**
 * 读写与显示
 * @return
 */intmain(){
    cout << CV_VERSION << endl;
    Mat src = cv::imread("test.png", IMREAD_GRAYSCALE);if(src.empty()){
        cout <<"Could not load image\n"<< endl;return-1;}namedWindow("gray", WINDOW_AUTOSIZE);imshow("gray", src);waitKey(0);return0;}

CMakeLists.txt

cmake_minimum_required(VERSION 3.16)project(test)find_package(OpenCV REQUIRED)add_executable(test test.cpp)target_link_libraries(test ${OpenCV_LIBS})

编译运行

cmake .make
./test

运行后屏幕会显示目录下

test.png

的灰度图像

12.6 问题解决(与Anaconda冲突)

特别注意!!!在安装完成anaconda之后再编译opencv时,cmake后会出现如下提示信息,导致最终编译不通过

错误信息如下

CMake Warning at cmake/OpenCVUtils.cmake:1547 (add_library):
  Cannot generate a safe runtime search path for target opencv_imgcodecs
  because files in some directories may conflict with libraries in implicit
  directories:

    runtime library [libpng16.so.16]in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/jarvis/anaconda3/lib
    runtime library [libz.so.1]in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/jarvis/anaconda3/lib
    runtime library [libtiff.so.5]in /usr/lib/x86_64-linux-gnu may be hidden by files in:
      /home/jarvis/anaconda3/lib

问题分析:安装anaconda的时候造成了之前的编译的库重新编译的时候,报.so文件被隐藏的问题,这是cmake在找库时的算法问题

问题解决:将anaconda/lib修改为anaconda/lib_bk,在opencv中重新创建build并cmake,等待opencv编译完成之后,再改回来即可

切记!!!在编译完opencv后,将anaconda/lib_bk重新修改为lib

13. CUDA安装

参考自linux安装tensorflow,cuda,cudnn安装,pytorch兼容,RTX30系列GPU兼容cuda

描述:本来想体验下kiwi一键安装CUDA+cuDNN+TensorRT的,但现在还处于内测阶段,还未公测,等kiwi公测吧,只能先自己来了。CUDA的安装按照上面视频的操作来就行,没有问题,下面简单过一遍流程。切记!!!CUDA的安装依赖于显卡驱动的安装,请务必安装完显卡驱动后再来安装CUDA

13.1 准备工作

首先确定我们要安装的CUDA版本,它是根据你的驱动程序版本来安装的,打开终端输入如下指令:

cat /proc/driver/nvidia/version
# 或者
nvidia-smi

通过上面两种方法都可以获取nvidia-driver的版本,如下图所示,博主的驱动程序版本是510.108.03,记住这个数字,后续会用到

在这里插入图片描述

我们知道了驱动版本后就需要确认CUDA下载的版本了,查看CUDA版本与驱动版本对应关系见下面的链接(查看表3即可):

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

下面是表3的部分截图,左边一列是CUDA版本,后面两列分别对应Linux下和Windows下驱动版本的要求,GA = General Availability,通用版本,指软件的通用版本(可以理解为稳定版本吧🤔),后续我们就安装GA版本,那么怎么查看自己要下载的CUDA版本呢?看对应的驱动要求就像,比如说在下面的红色框内就是我想要下载的CUDA版本,即CUDA 11.6 GA,驱动版本要求大于等于510.39.01,而我的驱动版本之前提到过是510.108.03,显然是满足要求的。根据表中来看,我还可以选择CUDA 11.5GA、CUDA 11.4等CUDA版本,因为我的驱动版本是满足要求的。具体选择那个根据个人情况来就行。

在这里插入图片描述

13.2 CUDA下载

确认了CUDA下载的版本后我们就可以去NVIDIA官网进行下载了,博主需要下载的是CUDA 11.6 GA

NVIDIA官网CUDA下载链接:https://developer.nvidia.com/cuda-toolkit-archive

打开上面的链接后,会出现如下的界面,点击你想要下载的CUDA Toolkit就行,比如博主想要下载CUDA 11.6 GA,点击下面红色框中的CUDA Toolkit 11.6.0即可。(为什么点击11.6.0而不是其它的11.6版本呢?其实大家可以从上面的版本对应图可知CUDA 11.6 Update 2对应CUDA Toolkit 11.6.2CUDA 11.6 Update1对应CUDA Toolkit 11.6.1CUDA 11.6 GA对应CUDA Toolkit 11.6.0)

在这里插入图片描述

点进去之后选择目标平台,如下图所示,博主这里选择Linux系统、x86_64架构、Ubuntu、20.04版本、runfile(local)安装方式

选择完成后通过wget后面的地址就可以下载了,建议将网址复制到浏览器中下载,访问的是外网,下载慢,最好是开代理

在这里插入图片描述

13.3 CUDA安装

首先检查下前面下载的安装包,看下安装包名,博主下载的安装包名为cuda_11.6.0_510.39.01_linux.run,首先看11.6.0是CUDA版本没有问题,其次看510.39.01是要求的驱动最小版本也没有问题,最后是linux即安装的系统也没有问题,检查完毕后下面我们开始安装工作👨‍🏭

首先cd到安装包所在目录,执行如下指令:

sudosh cuda_11.6.0_510.39.01_linux.run

输入密码后等待一段时间,出现下图,键盘按键上下移动,Enter按键选择确认,我们选择Continue

在这里插入图片描述

选择完成后跳转到如下界面,在最下面输入accept

在这里插入图片描述

之后跳转到如下界面,选择你想要安装的选项,

在这里插入图片描述

我们只考虑安装CUDA Toolkit 11.6,其他均取消(空格键取消),最后的界面如下,选择到Install,确认(等待终端一段时间,这个时候终端没有任何显示,不要关闭!!!)

在这里插入图片描述

最后出现如下界面,表示安装成功

在这里插入图片描述

安装完成之后的路径:

  • /usr/local/cuda-11.6:Toolkit
  • /usr/local/cuda-11.6/include:头文件
  • /usr/local/cuda-11.6/lib64:库文件

13.4 配置环境变量

CUDA安装完成之后需要添加一下环境变量,输入如下指令打开配置文件:

sudo gedit ~/.bashrc

在最末尾添加如下内容(将CUDA版本替换成你自己的)

exportPATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}exportLD_LIBRARY_PATH=/usr/local/cuda-11.6/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

点击保存退出,然后刷新一下

source ~/.bashrc

13.5 验证

环境变量配置完成后,在终端输入如下指令,有对应的输出代表安装成功:

nvcc --version

在这里插入图片描述

13.6 小结

CUDA的安装流程其实并不复杂,难点在于两个步骤,一是通过你的显卡驱动找到对应的CUDA版本,二是能否将外网的CUDA安装包顺利下载下来(需要代理)

14. cuDNN安装

参考自linux安装tensorflow,cuda,cudnn安装,pytorch兼容,RTX30系列GPU兼容cuda

描述:本来想体验下kiwi一键安装CUDA+cuDNN+TensorRT的,但现在还处于内测阶段,还未公测,等kiwi公测吧,只能先自己来了。cuDNN的安装按照上面视频的操作来就行,没有问题,下面简单过一遍流程。切记!!!cuDNN的安装依赖于CUDA的安装,请务必安装完CUDA后再来安装cuDNN

14.1 cuDNN下载

cuDNN的版本选择是根据CUDA版本来的,在前面CUDA的安装中,我们选择的是CUDA 11.6.0版本,依据此我们来安装cuDNN

NVIDIA官网cuDNN下载链接:https://developer.nvidia.com/rdp/cudnn-archive

打开上面的链接,会出现如下的界面(可能需要登陆,可以先注册一个NVIDIA账号,也不麻烦)

在这里插入图片描述

根据你的CUDA版本选择对应的cuDNN即可,CUDA 11.x代表CUDA11版本的都支持,博主这里选择的是Download cuDNN v8.4.0 (April 1st, 2022), for CUDA 11.x,如下所示,点击之后选择对应的平台安装包下载就行,如下面红色框所示,选择的是Linux,Ubuntu,x86_64的Tar安装包

在这里插入图片描述

注意!!!访问的是外网,下载慢,最好是开代理

14.2 cuDNN安装

首先检查下前面下载的安装包,看下安装包名,博主下载的安装包名为cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive.tar.xz,首先看linux-x86_64即安装的系统没有问题,其次看cuda11.6是依赖的cuda版本也没有问题,检查完毕后下面我们开始安装工作👨‍🏭

首先cd到安装包所在目录,进行解压,执行如下指令:

tar-xf cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive.tar.xz

等待解压完成,解压完成之后在目录下有一个cudnn-linux-x86_64-8.4.0.27_cuda11.6-archive文件夹,这个文件夹中又包含includelib两个文件夹,分别代表cuDNN头文件和cuDNN库文件。

cuDNN非常简单,就是将这两个文件中的所有内容复制到CUDA对应的文件夹中,我们来看下接下来的操作

首先输入如下指令,打开一个超级窗口(直接复制权限不够):

sudo nautilus
  • 在超级窗口中找到之前安装好的CUDA路径,在/usr/local/cuda-11.6
  • 将cudnn解压包中include文件全部复制到/usr/local/cuda-11.6/include
  • 将cudnn解压包中lib文件全部复制到/usr/local/cuda-11.6/lib64

至此,cuDNN的安装完毕

14.3 小结

cuDNN的安装流程其实并不复杂,其实都不能称之为安装,就是根据CUDA版本找到对应的cuDNN版本,下载后把其头文件和库文件复制到对应CUDA目录即可。难点在于两个步骤,一是通过你的CUDA版本找到对应的cuDNN版本,二是能否将外网的cuDNN安装包顺利下载下来(需要代理)

15. TensorRT安装

参考自Linux安装TensorRT、Ubuntu20.04安装TensorRT

描述:本来想体验下kiwi一键安装CUDA+cuDNN+TensorRT的,但现在还处于内测阶段,还未公测,等kiwi公测吧,只能先自己来了。TensorRT的安装按照上面视频的操作来就行,没有问题,下面简单过一遍流程。切记!!!TensorRT安装的版本依赖于CUDA和cuDNN的版本,请先确认下CUDA和cuDNN版本

15.1 TensorRT下载

TensorRT的版本是根据CUDA版本和cuDNN版本来的,在前面的CUDA的安装中,我们选择的是CUDA 11.6.0版本,依据此来安装TensorRT

NVIDIA官网TensorRT下载链接:https://developer.nvidia.com/nvidia-tensorrt-8x-download

打开上面的链接,会出现如下的界面(需要登陆,可以先注册一个NVIDIA账号,也不麻烦,可能需要开代理)

在这里插入图片描述

登陆完成之后,可以看到下面的界面,点击I Agree To the Terms of the …即下面的红色框,就可以显示各种TensorRT版本(其中GA版本=>稳定版本 EA版本=>测试版本),

在这里插入图片描述

点开之后就是对应TensorRT版本的各种形式的安装包(包名有提示适合的对应的CUDA版本),比如博主选择的是TensorRT 8.4 GA,选择的是x86_64架构,系统是Linux操作系统,下载形式选择压缩包形式(即TAR Package)下载,适用于CUDA 11.6版本,即TensorRT 8.4 GA for Linux x86_64 and CUDA 11.0, 11.1, 11.2, 11.3, 11.4, 11.5, 11.6 and 11.7 TAR Package,如下面的红色框所示。

在这里插入图片描述

注意!!!访问的是外网,下载慢,最好是开代理

15.2 TensorRT安装

首先检查下前面下载的安装包,看下安装包名,博主下载的安装包为TensorRT-8.4.1.5.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz,首先看Linux.x86_64即安装的系统没有问题,其次看cuda-11.6是依赖的cuda版本也没有问题,最后看cudnn8.4是依赖的cudnn版本也没有问题,检查完毕后下面我们开始安装工作👨‍🏭

首先cd到安装包所在目录,进行解压,执行如下指令:

tar zxf TensorRT-8.4.1.5.Linux.x86_64-gnu.cuda-11.6.cudnn8.4.tar.gz

等待解压完成。解压完成之后在目录下有一个TensorRT-8.4.1.5的文件夹

可以移动该文件夹存放在自己想放的目录下(也可以重命名),如:

mv TensorRT-8.4.1.5 /opt

至此,TensorRT安装完成

15.3 配置环境变量

TensorRT安装完成之后需要添加一下环境变量,输入如下指令打开配置文件:

sudo gedit ~/.bashrc

在最末尾添加如下内容(将TensorRT版本替换成你自己的)

exportLD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/TensorRT-8.4.1.5/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}exportPATH=/opt/TensorRT-8.4.1.5/bin${PATH:+:${PATH}}

点击保存退出,然后刷新一下

source ~/.bashrc

15.4 验证

测试代码:/opt/TensorRT-8.4.1.5/samples/sampleMNIST

在安装的tensorRT目录下samples文件夹下用sampleMNIST示例测试

首先进入该文件夹

cd /opt/TensorRT-8.4.1.5/samples/sampleMNIST

编译

make

如下图所示

在这里插入图片描述

编译成功后执行如下指令会有对应的结果输出:

./../../bin/sample_mnist

在这里插入图片描述

15.5 小结

TensorRT的安装流程其实并不复杂,其实都不能称之为安装,就是根据CUDA版本找到对应的TensorRT版本,下载后添加下环境变量即可。难点在于两个步骤,一是通过你的CUDA版本找到对应的TensorRT版本,二是是否能将外网的TensorRT安装包顺利下载下来(需要代理)

16. 编译protobuf

参考自Linux下编译protobuf、Linux下添加protobuf的环境变量

描述:由于要经常使用到tensorRT_Pro这个repo,因此需要编译特定版本的protobuf-3.11.4,编译流程看我下面的即可

16.1 安装

首先获取压缩包,通过我提供的软件安装包下载链接,里面就有protobuf-3.11.4

解压

先cd到安装包路径,然后解压,指令如下:

unzip protobuf-3.11.4.zip

编译

cd protobuf-3.11.4/cmake
cmake .-Dprotobuf_BUILD_TESTS=OFF
cmake --build.

耐心等待编译完成(需要一段时间)

创建安装目录

我们先要创建一个文件用于存放安装后的protobuf的头文件和库文件,我们选择在

/home

目录下创建一个protobuf文件,指令如下:

mkdir protobuf

安装

安装的位置选择上面创建的protobuf路径即可,指令如下:

makeinstallDESTDIR=/home/jarvis/protobuf

注意:编译完成后的protobuf文件夹下仅仅只有一个user一个文件夹,需要将编译好的

protobuf/user/local

下的bin、include、lib文件夹复制到

protobuf

当前文件夹下,方便后续tensorRT_Pro项目的CMakeLists.txt的指定。

16.2 环境变量的配置

首先打开配置文件,指令如下:

sudovim /etc/profile

添加如下内容保存并退出(注意路径修改为自己的路径)

exportPATH=$PATH:/home/jarvis/protobuf/bin
exportPKG_CONFIG_PATH=/home/jarvis/probobuf/lib/pkgconfig

source生效

source /etc/profile

配置动态路径

sudovim /etc/ld.so.conf

追加如下内容(注意路径修改为自己的路径)

/home/jarvis/protobuf/lib

验证

protoc --version

输出对应版本信息说明安装成功

17. Pytorch安装

参考自Ubuntu20.04深度学习环境:CUDA+Pyotrch+Anaconda+VScode、Pytorch-gpu安装教程

描述:本次介绍pytorch-gpu版本安装,在安装GPU版本的pytorch之前,请先确保你安装了显卡驱动,安装GPU版本的Pytorch只需要你拥有一张显卡和对应的显卡驱动即可。切记!!!Pytorch的安装依赖于显卡驱动和Anaconda的安装,请务必安装完显卡驱动和Anaconda后再来安装Pytorch

17.1 介绍

首先我们来明确一个概念,那就是安装GPU版本pytorch之前需不需要安装cuda和cudnn呢?,答案是不需要。以下内容copy自一文搞懂PyTorch与CUDA那些事

许多同学误以为Pytorch和Tensorflow一样,运行时需要本机环境内的CUDA和cuDNN支持,但其实在一台没有安装CUDA的环境中按照官网的指南安装PyTorch也是可以正常在GPU上运行的。

安装GPU版本的PyTorch版本号尾部会出现

cuxxx

的字样,也就是说,PyTorch在安装时会自动安装所需的CUDA运行库,用户只需要保持PyTorch版本(包含其内部的CUDA版本)、Nvidia驱动版本和GPU型号相匹配。

CUDA版本与驱动版本对应关系见下面的链接(查看表3即可):

https://docs.nvidia.com/cuda/cuda-toolkit-release-notes/index.html

通常情况下,只要驱动满足要求,并且PyTorch官方有预编译相应的CUDA版本,直接安装对应版本的PyTorch即可。

注意:安培(Ampere)架构GPU(GeForce RTX 30系列显卡,例如RTX3060)只支持CUDA11.0即以上版本,PyTorch官方只有1.7及以上版本才有预编译CUDA11,因此建议使用安培架构GPU的同学使用PyTorch1.7及以上版本

17.2 准备工作

首先确认下安装的Pytorch版本及其指令。先要查看显卡驱动版本和其对应的CUDA版本,第13节有详细流程,这里不再赘述,博主的显卡驱动为510.108.03,CUDA版本最高支持CUDA 11.6,因此我安装的GPU版本的Pytorch中的CUDA运行库大于11.0且小于等于11.6都可以。

因此去Pytorch官网:https://pytorch.org/ 找一个适合我的版本,我选择从历史版本中寻找,如下图所示:

在这里插入图片描述

根据我的CUDA版本限制,我找到了一个torch版本为v1.12.0,其pip安装指令如下:

pip installtorch==1.12.0+cu116 torchvision==0.13.0+cu116 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu116

pytorch的版本确定了,那对于python版本有没有要求呢?其实是有的,比如说你的torch-1.12.0+cu116就不能安装在python3.6下,具体可查看torch的各种whl文件

torch和对应python版本查看链接:https://download.pytorch.org/whl/torch/

点击上面的链接,你就可以看到所有的torch安装包,注意!!!我们并不是要下载安装,我们只是来确认下torch-1.12.0+cu116对应的python版本,点击键盘上的

ctrl+f

输入cu116就可以找到对应CUDA11.6版本的torch了,如下图所示:

在这里插入图片描述

其中

cu116

就是对应CUDA-11.6,

cp-38-cp-38

就是对应python-3.8版本,因此,从上图的红色框中可知,torch-1.12.0+cu116可以安装的python版本为3.7/3.8/3.9/3.10均可,大家根据自己的实际情况来进行选择

17.3 安装

1.创建虚拟环境

conda create -n yolov8 python=3.8

其中,

yolov8

虚拟环境名,可以自己设置,python版本如果不指定默认安装最新的,而在之前的分析中,我们知道了后续的torch-1.12.0+cu116的安装对应的python版本为3.7/3.8/3.9/3.10,因此我们指定创建的虚拟环境的python版本为3.8

2.切换到新建虚拟环境下

conda activate yolov8

3.查看对应的pip源

pip config list

确保pip安装的源是清华源或阿里云的源,可以查看2.2小节的pip换源,也可以在每次pip install软件的时候加上

-i https://pypi.tuna.tsinghua.edu.cn/simple

,不过这样比较麻烦,博主输入

pip coinfig list

后的输出如下

global.index-url='https://pypi.tuna.tsinghua.edu.cn/simple'

4.输入选择的安装命令

pip installtorch==1.12.0+cu116 torchvision==0.13.0+cu116 torchaudio==0.12.0 --extra-index-url https://download.pytorch.org/whl/cu116

安装包很大,耐心等待安装完成即可,如下图所示

在这里插入图片描述

特别注意!!!如果安装失败,则可以将创建的虚拟环境完全移除,重新在pytorch官网选择一个合适的torch安装指令,按照上面步骤重新来过,移除指令如下:

conda activate base
conda remove -n pytorch-gpu --all

17.4 验证

1.激活虚拟环境

conda activate yolov8

2.进入python环境

python

3.导入torch

import torch
torch.cuda.is_available()

输出为True,说明安装成功,如下图所示:

在这里插入图片描述

18. 编译OpenBLAS

描述:最近在学习 Algo C++ 课程时需要使用到 OpenBLAS 第三方库,因此需要编译该库方便后续使用,编译流程看我下面的即可

OpenBLAS介绍:OpenBLAS 是一个快速的、开源的、高性能的基础线性代数库,其主要提供矩阵运算相关的函数和 API。OpenBLAS 支持一些常见的矩阵运算,如矩阵相乘、矩阵向量相乘、矩阵的转置、求解线性方程组、特征值分解等等,其内部实现了多线程技术和 SIMD 指令加速,可以有效地利用多核 CPU 的计算能力,提高计算速度。在机器学习和科学计算等领域中,OpenBLAS 是一个广泛应用的高性能数学库之一。而对于 CUDA 上的矩阵运算操作,我们也可以调用对应的 cuBLAS 第三方库进行运算。(from chatGPT)

18.1 准备工作

在编译之前需明确自己的 TARGET 即 CPU 设备型号,首先打开终端使用如下指令可查看对应的CPU

cat /proc/cpuinfo |grep'model name'|uniq

博主的 CPU 如下图所示:

在这里插入图片描述

接下来查看 CPU 型号所对应的 TARGET 名称,具体查看 OpenBLAS 源码的 TargetList.txt 文档,下面是

X86/X86_64

架构支持的列表,更多支持可查看源文档

Force Target Examples:

makeTARGET=NEHALEM
makeTARGET=LOONGSON3A BINARY=64makeTARGET=ISTANBUL

Supported List:
1.X86/X86_64
a)Intel CPU:
P2
KATMAI
COPPERMINE
NORTHWOOD
PRESCOTT
BANIAS
YONAH
CORE2
PENRYN
DUNNINGTON
NEHALEM
SANDYBRIDGE
HASWELL
SKYLAKEX
ATOM
COOPERLAKE

b)AMD CPU:
ATHLON
OPTERON
OPTERON_SSE3
BARCELONA
SHANGHAI
ISTANBUL
BOBCAT
BULLDOZER
PILEDRIVER
STEAMROLLER
EXCAVATOR
ZEN

c)VIA CPU:
SSE_GENERIC
VIAC3
NANO

具体如何查看自己 CPU 型号对应的 Target 呢?

博主也没有找到合适的方法,只能问问 chatGPT,希望它不要犯病😂。博主是 Inter CPU 从其中选择的是 HASWELL

18.2 编译

本次编译选择从源码编译,首先获取压缩包,可以通过我提供的软件安装包下载链接,里面有 OpenBLAS-0.3.17,也可以通过 https://github.com/xianyi/OpenBLAS/tags 选择不同的版本进行编译

解压

先 cd 到安装包路径,然后解压,指令如下:

unzip OpenBLAS-0.3.17

创建安装目录

我们先要创建一个文件用于存放安装后的 OpenBLAS 的头文件和库文件,我们选择在当前目录下创建一个 OpenBLAS 文件夹,指令如下:

mkdir OpenBLAS

创建auto.sh

这次按照杜老师写的脚本来自动完成整个编译过程,在与 OpenBLAS-0.3.17 的同级目录下创建一个脚本文件

auto.sh

用于完成自动编译 OpenBLAS-0.3.17 的过程,其脚本文件中的内容如下:

#!/bin/bashset-eif["$(whoami)"=="root"];thenaptinstall cmake gfortran libblas-dev libblas3 -yelseecho Please input password to execute \"sudo aptinstall cmake gfortran libblas-dev libblas3 -y\"
    sudoaptinstall cmake gfortran libblas-dev libblas3 -yficd OpenBLAS-0.3.17
makeTARGET=HASWELL -jmakePREFIX=../OpenBLAS install-jcd../
rm-rf OpenBLAS-0.3.17
  • 脚本首先检查当前用户是否为 root 用户,如果是,则直接安装必要的依赖库,否则需要用户输入密码以执行 sudo 命令安装依赖库。
  • 接着进入 OpenBLAS 源码目录,执行 make 命令进行编译,通过参数 -j 指定使用多线程加速编译,-j 后面的数字表示并行编译线程数,根据机器配置合理设置。注意TARGET修改为你自己所选择的
  • 然后执行 make install 命令安装编译好的 OpenBLAS 库到指定路径。注意PEEFIX为安装的路径,如果你想将 OpenBLAS 安装到别的目录请修改
  • 最后删除 OpenBLAS 源码目录,清理环境。这个脚本适用于 Ubuntu 等基于 Debian 的 Linux 系统。
  • 切记!!!当需要编译其它版本的OpenBLAS库的时候,需要简单修改下 auto.sh 脚本文件的内容,将 cd 到的文件夹修改为你解压的文件夹

安装

auto.sh

和 解压后的 OpenBLAS-0.3.17 文件夹放在同一级目录下,执行如下代码:

bash auto.sh

编译安装过程可能有点慢,请耐心等待

安装完成后会出现如下提示,且在当前目录下会存在编译好的 OpenBLAS 的头文件和库文件

在这里插入图片描述

18.3 验证

利用OpenBLAS的cblas_sgemm写一个简单矩阵相乘的示例

创建一个 workspace 文件夹存放编译后的程序文件,创建一个 src 文件夹存放源文件,创建一个makefile 文件用于编译。整个项目的整体结构如下:

.
├── auto.sh
├── makefile
├── OpenBLAS
│   ├── bin
│   ├── include
│   └── lib
├── OpenBLAS-0.3.17.zip
├── src
│   └── main.cpp
└── workspace

6 directories, 4 files

src/main.cpp 内容如下:

#include<iostream>#include<cblas.h>intmain(){constint N =3;constfloat alpha =1.0;constfloat beta =0.0;float A[N][N]={{1,2,3},{4,5,6},{7,8,9}};float B[N][N]={{1,1,1},{0,1,0},{0,0,1}};float C[N][N]={0};cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans,
                N, N, N, alpha,&A[0][0], N,&B[0][0], N, beta,&C[0][0], N);

    std::cout <<"A x B = "<< std::endl;for(int i =0; i < N;++i){for(int j =0; j < N;++j){
            std::cout << C[i][j]<<" ";}
        std::cout << std::endl;}return0;}

makefile 内容如下:

# 1.参数定义
cc        := g++
name      := pro
workdir   := workspace
srcdir    := src
objdir    := objs
stdcpp    := c++11

# 定义cpp的路径查找和依赖项mk文件
cpp_srcs := $(shell find $(srcdir)-name "*.cpp")
cpp_objs := $(cpp_srcs:.cpp=.cpp.o)
cpp_objs := $(cpp_objs:$(srcdir)/%=$(objdir)/%)
cpp_mk   := $(cpp_objs:.cpp.o=.cpp.mk)

# 定义cu文件的路径查找和依赖项mk文件
cu_srcs := $(shell find $(srcdir)-name "*.cu")
cu_objs := $(cu_srcs:.cu=.cu.o)
cu_objs := $(cu_objs:$(srcdir)/%=$(objdir)/%)
cu_mk   := $(cu_objs:.cu.o=.cu.mk)

# 定义opencv和cuda需要用到的库文件
link_sys       := stdc++ dl openblas
link_librarys  := $(link_sys)

# 定义头文件路径,请注意斜杠后边不能有空格
# 只需要写路径,不需要写-I
include_paths := src OpenBLAS/include            # 注意!!! 如果OpenBLAS安装在其他目录,请修改头文件路径

# 定义库文件路径,只需要写路径,不需要写-L
library_paths := $(shell pwd)/OpenBLAS/lib        # 注意!!! 如果OpenBLAS安装在其他目录,请修改库文件路径

# 把library path给拼接为一个字符串,例如a b c => a:b:c
# 然后使得LD_LIBRARY_PATH=a:b:c
empty := 
library_path_export := $(subst $(empty) $(empty),:,$(library_paths))

# 把库路径和头文件路径拼接起来成一个,批量自动加-I、-L、-l
run_paths     := $(foreach item,$(library_paths),-Wl,-rpath=$(item))
include_paths := $(foreach item,$(include_paths),-I$(item))
library_paths := $(foreach item,$(library_paths),-L$(item))
link_librarys := $(foreach item,$(link_librarys),-l$(item))

# 如果是其他显卡,请修改-gencode=arch=compute_75,code=sm_75为对应显卡的能力
# 显卡对应的号码参考这里:https://developer.nvidia.com/zh-cn/cuda-gpus#compute
# 如果是 jetson nano,提示找不到-m64指令,请删掉 -m64选项。不影响结果
cpp_compile_flags :=-std=$(stdcpp)-w -g -O0 -m64 -fPIC -fopenmp -pthread
link_flags        :=-pthread -fopenmp -Wl,-rpath='$$ORIGIN'

cpp_compile_flags += $(include_paths)
link_flags        += $(library_paths) $(link_librarys) $(run_paths)

# 如果头文件修改了,这里的指令可以让他自动编译依赖的cpp或者cu文件
ifneq($(MAKECMDGOALS), clean)-include $(cpp_mk) $(cu_mk)
endif

$(name): $(workdir)/$(name)

all       : $(name)
run       : $(name)
    @cd $(workdir)&&./$(name) $(run_args)

$(workdir)/$(name): $(cpp_objs) $(cu_objs)
    @echo Link $@
    @mkdir -p $(dir $@)
    @$(cc) $^-o $@ $(link_flags)

$(objdir)/%.cpp.o : $(srcdir)/%.cpp
    @echo Compile CXX $<
    @mkdir -p $(dir $@)
    @$(cc)-c $<-o $@ $(cpp_compile_flags)

# 编译cpp依赖项,生成mk文件
$(objdir)/%.cpp.mk : $(srcdir)/%.cpp
    @echo Compile depends C++ $<
    @mkdir -p $(dir $@)
    @$(cc)-M $<-MF $@ -MT $(@:.cpp.mk=.cpp.o) $(cpp_compile_flags)
    
# 定义清理指令
clean :
    @rm -rf $(objdir) $(workdir)/$(name)
    @rm -rf $(workdir)/mnist

# 防止符号被当做文件
.PHONY : clean run $(name)

# 导出依赖库路径,使得能够运行起来
export LD_LIBRARY_PATH:=$(library_path_export)

在终端执行

make run

即可看到两个矩阵相乘的结果,如下图所示:

在这里插入图片描述

19. 编译FFmpeg

参考自FFMpeg学习笔记–Ubuntu20.04编译FFmpeg、FFplay和FFprobe

描述:最近在学习视频流媒体的编解码,在学习 hard_decode_trt 项目时需要使用到 FFMpeg 第三方库,因此需要编译该库方便后续使用。编译流程按照上文的操作即可,值得注意的是 hard_decode_trt 使用的 FFmpeg-4.2 版本,博主编译过 FFmpeg-5.1 版本,发现在 FFmpeg 中有一些 API 发生了改变,导致 hard_decode_trt 项目无法运行起来,所以为了让问题更加简单化,博主也是编译的 FFmpeg-4.2,其它版本的编译也可以按照上文的流程走,没有问题。

FFmpeg介绍:FFmpeg 是一款跨平台的、开源的音视频处理软件。它可以对音视频进行编解码、转码、剪辑、合并等处理,支持多种格式的音视频文件。在视频流媒体编解码中,FFmpeg 通常被用来进行解封装、编码、解码、转换等操作。它通过将原始的音视频数据流解封装成一帧一帧的数据,然后将这些数据传输给硬件编码器(例如 NVIDIA 的 NVDEC)。硬件编码器将编码后的数据传输回 FFmpeg,再由 FFmpeg 将编码后的数据封装称所需要的视频格式,例如 MP4、AVI 等。FFmpeg 提供了必要的解封装和编解码功能,使得视频编解码更加高效、简单和方便。

19.1 下载FFmpeg

下载 4.2 版本的 ffmpeg,指令如下:

wget http://www.ffmpeg.org/releases/ffmpeg-4.2.tar.gz

可以将链接复制到浏览器中下载,外网访问慢,建议开代理。也可以点击 here[pwd:yolo] 下载博主准备好的安装包

解压下载好的压缩包

tar-zxvf ffmpeg-4.2.tar.gz

19.2 编译FFmpeg

进入解压后的文件夹

cd ffmpeg-4.2

安装依赖

# 安装ffplay需要的依赖sudoapt-getinstall libx11-dev xorg-dev libsdl2-2.0 libsdl2-dev

sudoaptinstall clang libfdk-aac-dev libspeex-dev libx264-dev libx265-dev libnuma-dev

sudoaptinstall yasm pkg-config libopencore-amrnb-dev libopencore-amrwb-dev

编译FFmpeg

# 查看帮助文档确定需要安装的相关参数
./configure --help

配置相关参数

./configure --disable-static --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-ffplay --enable-ffprobe --enable-libx264 --enable-libx265 --enable-debug

注意这里博主与参考的博文设置不太一样,博主新增了

--disable-static
--enable-shared

参数,让其编译成动态库且不需要静态库,方便后续 hard_decode_trt 项目的指定。

make编译

make-j24

:make 这步需要的时间一般比较长

安装

sudomakeinstall

耐心等待安装完成即可。

安装完成后的 FFmpeg 头文件在 /usr/local/include 目录下,库文件在 /usr/local/lib 目录下,可执行文件在 /usr/local/bin 目录下

19.3 设置环境变量

博主并未设置,若有需求见参考博文

19.4 验证

查看 FFmpeg 的版本,由于博主未设置环境变量,所以先要 cd 到 /usr/local/bin 目录下

cd /usr/local/bin

ffmpeg -version

查看 FFmpeg 帮助文档

ffmpeg -h

ffmpeg -h long

ffmpeg -h full

19.5 卸载FFmpeg

卸载非常简单,指令如下:

# 首先进入 ffmpeg 源码编译的路径cd ffmpeg-4.2

sudomake uninstall

执行完成后可以发现在 /usr/local/include 中 FFmpeg 的头文件没有了,在 /usr/local/lib 中 FFmpeg 的库文件没有了,在 /usr/local/bin 中 FFmpeg 的可执行文件没有了。

这个需求非常有必要,当你发现编译后的 FFmpeg 缺少某些库时,你可以通过

sudo make uninstall

卸载,然后通过

./configure

重新配置参数编译。当你需要替换其它版本的 FFmepg 时,也可以先通过

sudo make uninstall

卸载,然后下载其它版本的 FFmpeg,通过上述操作重新编译。

20. NVIDIA VIDEO_CODEC_SDK

在学习视频流硬解码过程中需要用到视频解码的 GPU 硬件加速器引擎,而 NVIDIA 提供了一个用于视频编解码的 SDK 即 NVIDIA VIDEO_CODEC_SDK,它是一个 API 套件,包含高性能工具、样本和文档,适用于 Windows 和 Linux 的硬件加速型视频编码和解码。此 SDK 包含两个硬件加速接口:

  • 用于视频编码加速的 NVENCODE API
  • 用于视频解码加速的 NVDECODE API(旧称 NVCUVID API)

NVENC:硬件加速的视频编码

从 Kepler 这一代开始,NVIDIA GPU 包含基于硬件的编码器(简称为 NVENC),可提供基于硬件的全加速视频编码,且独立于图形性能。由于计算复杂的编码工作流完全卸载至 NVENC,图形引擎和 CPU 可以有更多的事件执行其它操作。

NVDEC:硬件加速的视频解码

NVIDIA GPU 包含基于硬件的解码器(简称为 NVDEC),可为几种热门的编解码器提供基于硬件的全加速视频解码。由于解码工作流完全卸载至 NVDEC,图形引擎和 CPU 可以有更多的事件执行其它操作。NVDEC 比实时解码速度更快,非常适合于转码应用以及视频播放应用。

Copy 自 NVIDIA 视频编解码器 SDK

由于是 SDK 不需要编译,直接下载解压拿来用就行,其下载地址为:

现在最新的 SDK 为 12.0 版本,其系统要求如下图,Linux 下显卡驱动要求为 520.56.06 或者更新,且只支持 NVIDIA Quadro,Tesla,GRID 以及 GeForce 系列产品

在这里插入图片描述

其历史版本可通过 https://developer.nvidia.com/video-codec-sdk-archive 下载,也可以点击 here[pwd:yolo] 下载博主准备好的安装包(提供 10.0、11.0、11.1、12.0 四个版本的 SDK,根据自己的需求下载即可) ,每个版本都有对应的显卡驱动要求,例如 11.0 要求 Linux 下显卡驱动大于等于 455.27。下载完成后解压即可,后续可通过 makefile 文件进行其头文件和库文件的指定。

21. Eigen

描述:最近在学习 CPD 点集配准方法,在学习 https://github.com/gadomski/cpd 项目时需要使用到 Eigen 库用于进行数学运算。值得注意的是,Eigen 库本身不需要编译,它是一个头文件,这意味着你无需单独编译它,只要将相应的头文件包含在项目中,就可以直接使用它的功能了。

Eigen介绍:Eigen 是一个用于 C++ 的开源线性代数库,它提供了丰富的线性代数运算功能,包括矩阵运算、向量运算、线性方程求解、特征值和特征向量计算等。Eigen 库是一个纯头文件库,因此使用起来非常方便,无需编译额外的库文件,只需将相应的头文件包含在你的项目中即可。

以下是 Eigen 库的一些特点和优势:

1. 简洁易用:Eigen 的 API 设计简单直观,易于学习和使用,提供了类似于 MATLAB 的矩阵和向量表示方式,使得代码编写更加清晰和易读。

2. 高性能:Eigen 库在设计上注重运行时性能,采用了各种优化技术,同时支持向量化指令,使得它在进行大规模线性代数计算时表现出色。

3. 功能丰富:Eigen 提供了大量的线性代数运算函数,包括基本的矩阵和向量操作,以及线性方程组求解、特征值和特征向量计算、矩阵分解等高级功能。

4. 跨平台:Eigen 是一个跨平台的库,可以在各种操作系统和编译器上运行,无需担心兼容性问题。

5. 自由开源:Eigen 遵循 MPL2.0 协议,可以免费用于商业和非商业项目。

由于 Eigen 库的优雅设计和高性能,它被广泛应用于各种领域,如科学计算、机器学习、计算机图形学等

21.1 下载Eigen

你需要从 Eigen 官方网站 https://eigen.tuxfamily.org/index.php?title=Main_Page 中下载对应的源文件压缩包,如下图所示:

在这里插入图片描述

在这里博主选择了一个相对稳定的版本 Eigen-3.4.0

21.2 使用Eigen

我们把下载好的 Eigen 进行解压后就可以使用了,我们来写一个简单的示例代码看看效果

main.cpp 内容如下:

#include<iostream>#include<Eigen/Dense>intmain(){
    Eigen::MatrixXd matrix(2,2);
    matrix <<1,2,3,4;

    Eigen::VectorXd vector(2);
    vector <<5,6;

    Eigen::VectorXd result = matrix * vector;

    std::cout <<"Matrix * Vector = \n"<< result << std::endl;return0;}

CMakeLists.txt 文件如下:

cmake_minimum_required(VERSION 3.5)project(EigenExample)

# 设置编译器
set(CMAKE_CXX_STANDARD 11)

# 指定Eigen3的头文件路径
include_directories(/path/to/custom_eigen3)

# 设置可执行文件
add_executable(eigen_example main.cpp)

你需要修改 Eigen 库的路径为你使用的路径,然后将上述两个文件(main.cpp和CMakeLists.txt)放在同一个目录下,执行以下命令来编译你的程序:

mkdir build
cd build
cmake ..make

编译运行效果如下图所示:

在这里插入图片描述


本文转载自: https://blog.csdn.net/qq_40672115/article/details/130255299
版权归原作者 爱听歌的周童鞋 所有, 如有侵权,请联系我们删除。

“Ubuntu20.04软件安装大全”的评论:

还没有评论