Ubuntu20.04软件安装大全

目录

  • Ubuntu20.04 软件安装大全
    • 前言
    • 1. Windows和Ubuntu双系统安装
      • 1.1 下载Ubuntu系统镜像
      • 1.2 磁盘分区
      • 1.3 GPT分区安装Ubuntu
      • 1.4 系统完成后的一些设置
      • 1.5 遇到的一些小bug
    • 2. 换源
      • 2.1 apt换源
      • 2.2 pip换源
    • 3. 显卡驱动安装
      • 3.1 卸载显卡驱动
      • 3.2 准备工作
      • 3.3 驱动安装
      • 3.4 验证
    • 4. VScode安装
      • 4.1 安装包下载
      • 4.2 插件下载
      • 4.3 常用设置
    • 5. 百度网盘安装
    • 6. Google Chrome安装
      • 6.1 安装包下载
      • 6.2 常用设置
    • 7. 截图工具安装
      • 7.1 安装
      • 7.2 配置
      • 7.3 设置快捷方式
    • 8. Typora安装
      • 8.1 vim安装
      • 8.2 Typora安装
      • 8.3 偏好设置
      • 8.4 主题
    • 9. Pycharm安装
      • 9.1 安装包下载
    • 10. Anaconda安装
      • 10.1 安装包下载
      • 10.2 首次激活环境遇到的问题
      • 10.3 conda常用指令
    • 11. Netron安装
    • 12. 编译OpenCV4.6.0
      • 12.1 安装依赖项
      • 12.2 下载OpenCV 4.6.0源文件
      • 12.3 Cmake配置和编译OpenCV
      • 12.4 环境配置
      • 12.5 验证
      • 12.6 问题解决(与Anaconda冲突)
    • 13. CUDA安装
      • 13.1 准备工作
      • 13.2 CUDA下载
      • 13.3 CUDA安装
      • 13.4 配置环境变量
      • 13.5 验证
      • 13.6 小结
    • 14. cuDNN安装
      • 14.1 cuDNN下载
      • 14.2 cuDNN安装
      • 14.3 小结
    • 15. TensorRT安装
      • 15.1 TensorRT下载
      • 15.2 TensorRT安装
      • 15.3 配置环境变量
      • 15.4 验证
      • 15.5 小结
    • 16. 编译protobuf
      • 16.1 安装
      • 16.2 环境变量的配置
    • 17. Pytorch安装
      • 17.1 介绍
      • 17.2 准备工作
      • 17.3 安装
      • 17.4 验证
    • 18. 编译OpenBLAS
      • 18.1 准备工作
      • 18.2 编译
      • 18.3 验证
    • 19. 编译FFmpeg
      • 19.1 下载FFmpeg
      • 19.2 编译FFmpeg
      • 19.3 设置环境变量
      • 19.4 验证
      • 19.5 卸载FFmpeg
    • 20. NVIDIA VIDEO_CODEC_SDK

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 系统完成后的一些设置

启动菜单的默认项

博主并没有选择设置

时间同步

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

sudo apt install 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

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

sudo update-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创建配置文件,指令如下:

sudo vim 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 卸载显卡驱动

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

在终端输入如下指令:

sudo apt-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.更新软件列表,指令如下:

sudo apt-get update

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

sudo ubuntu-drivers devices

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

sudo apt install 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
sudo apt 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到安装包路径下,然后进行安装即可,指令如下:

sudo apt install ./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下安装非常简单,打开终端执行如下指令:

sudo apt install 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安装指令如下:

sudo apt-get updatesudo apt-get install vim

8.2 Typora安装

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

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

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

sudo vim ~/.bashrc

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

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

source一下,让配置生效

source ~/.bashrc

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

./Typora

添加桌面快捷方式

cd /usr/share/applications
sudo vim 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

创建文件夹

sudo mkdir /opt/pycharm

移动文件夹

cd download
sudo mv 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修改为你的用户名)

export PATH="/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- powershellSee 'conda init --help' for more 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

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,若已安装,此步跳过

sudo apt install g++
sudo apt install cmake
sudo apt install make
sudo apt install wget unzip

2.安装opencv依赖的库

sudo apt-get install build-essential libgtk2.0-dev libgtk-3-dev libavcodec-dev libavformat-dev libjpeg-dev libswscale-dev libtiff5-dev

3.安装一些可选的库

# python3支持(首次安装了python的库,但make报错了,之后删了这两个库,若不使用python,建议不安装)
sudo apt install python3-dev python3-numpy
# streamer支持
sudo apt install libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
# 可选的依赖
sudo apt install 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 -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES ..

4.用make进行编译

make -j24

5.用make安装

sudo make install

默认安装路径如下

  • /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>using namespace cv;
using namespace std;/*** 读写与显示* @return*/
int main() {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);return 0;
}

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_imgcodecsbecause files in some directories may conflict with libraries in implicitdirectories:runtime library [libpng16.so.16] in /usr/lib/x86_64-linux-gnu may be hidden by files in:/home/jarvis/anaconda3/libruntime library [libz.so.1] in /usr/lib/x86_64-linux-gnu may be hidden by files in:/home/jarvis/anaconda3/libruntime 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到安装包所在目录,执行如下指令:

sudo sh 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版本替换成你自己的)

export PATH=/usr/local/cuda-11.6/bin${PATH:+:${PATH}}
export LD_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版本替换成你自己的)

export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/TensorRT-8.4.1.5/lib${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export PATH=/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路径即可,指令如下:

make install DESTDIR=/home/jarvis/protobuf

注意:编译完成后的protobuf文件夹下仅仅只有一个user一个文件夹,需要将编译好的protobuf/user/local下的bin、include、lib文件夹复制到protobuf当前文件夹下,方便后续tensorRT_Pro项目的CMakeLists.txt的指定。

16.2 环境变量的配置

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

sudo vim /etc/profile

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

export PATH=$PATH:/home/jarvis/protobuf/bin
export PKG_CONFIG_PATH=/home/jarvis/probobuf/lib/pkgconfig

source生效

source /etc/profile

配置动态路径

sudo vim /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 install torch==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 install torch==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:make TARGET=NEHALEM
make TARGET=LOONGSON3A BINARY=64
make TARGET=ISTANBULSupported List:
1.X86/X86_64
a)Intel CPU:
P2
KATMAI
COPPERMINE
NORTHWOOD
PRESCOTT
BANIAS
YONAH
CORE2
PENRYN
DUNNINGTON
NEHALEM
SANDYBRIDGE
HASWELL
SKYLAKEX
ATOM
COOPERLAKEb)AMD CPU:
ATHLON
OPTERON
OPTERON_SSE3
BARCELONA
SHANGHAI
ISTANBUL
BOBCAT
BULLDOZER
PILEDRIVER
STEAMROLLER
EXCAVATOR
ZENc)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" ];
thenapt install cmake gfortran libblas-dev libblas3 -y
elseecho Please input password to execute \"sudo apt install cmake gfortran libblas-dev libblas3 -y\"sudo apt install cmake gfortran libblas-dev libblas3 -y
ficd OpenBLAS-0.3.17
make TARGET=HASWELL -j
make PREFIX=../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
└── workspace6 directories, 4 files

src/main.cpp 内容如下:

#include <iostream>
#include <cblas.h>int main()
{const int N = 3;const float alpha = 1.0;const float 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;}return 0;
}

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需要的依赖
sudo apt-get install libx11-dev xorg-dev libsdl2-2.0 libsdl2-devsudo apt install clang libfdk-aac-dev libspeex-dev libx264-dev libx265-dev libnuma-devsudo apt install 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 这步需要的时间一般比较长

安装

sudo make install

耐心等待安装完成即可。

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

19.3 设置环境变量

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

19.4 验证

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

cd /usr/local/binffmpeg -version

查看 FFmpeg 帮助文档

ffmpeg -hffmpeg -h longffmpeg -h full

19.5 卸载FFmpeg

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

# 首先进入 ffmpeg 源码编译的路径
cd ffmpeg-4.2sudo make 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 不需要编译,直接下载解压拿来用就行,其下载地址为:

  • https://developer.nvidia.com/nvidia-video-codec-sdk/download

现在最新的 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 文件进行其头文件和库文件的指定。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/8990.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探索小程序的世界(专栏导读、基础理论)

文章导读 一、为什么要学习小程序开发1.1 低门槛1.2 市场需求1.3 创业机会1.4 技术发展趋势 二、专栏导读2.1 实战系列2.2 工具系列2.3 游戏系列2.4 插件系列 三、基础理论3.1 微信小程序简易教程框架组件API工具 开发者工具项目结构 3.2 app.json配置pageswindowtabbar 3.3 Ap…

CLion开发环境的完全解析(QT开发?STM32?顺便速通cmake

文章目录 下载与安装主题推荐编辑器与clang-format设置鼠标滚轮改变字体大小clang-format的使用我的 .clang-format 配置 编译工具链设置编译工具链的添加与解释cmake配置项的添加与解释 cmake的使用与实战常用的cmake变量&#xff08;入门&#xff09;常用的cmake命令&#xf…

《HelloGitHub》第 83 期

兴趣是最好的老师&#xff0c;HelloGitHub 让你对编程感兴趣&#xff01; 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等&#xff0c;涵盖多种编程语言 …

风尚云网前端-vue中使代码高亮块显示

应该在项目中常见的这种需要把&#xff0c;高亮代码块显示代码&#xff0c;今天我们用到的是高亮官网 基本用法 在浏览器中 在网页上使用 highlight.js 的最低要求是链接到库以及主题之一并调用highlightAll&#xff1a; <link rel"stylesheet" href"/path…

分享!!!发现一个暂时免费使用的AI网站!!!

前言&#xff1a;虽然ChatGPT在这段时间很火&#xff0c;但是终究对我们来说也只是个工具&#xff0c;我们只需要知道如何使用它&#xff0c;它为我们返回的结果不可能在我们平常需求中100%的一样&#xff0c;是需要我们去看懂代码&#xff0c;然后修改代码的&#xff0c;打铁还…

ChatGPT 落入大学生之手,6 个月后实现月收入 45 万元,代价:挂科两门!

推荐阅读&#xff1a;日本“性爱机器人”上线1小时被抢空&#xff0c;背后却让人细思极恐 ChatGPT 浪潮来袭&#xff0c;大厂们正在紧锣密鼓地研发大模型&#xff0c;创业公司在垂直生态之下发力内容制作、工具等应用&#xff0c;不少一线开发者、爱好者则利用 AI 在提升工作效…

chatgpt赋能python:Python不挂科,学会这些技能就足够

Python不挂科&#xff0c;学会这些技能就足够 Python已成为现代编程语言中最受欢迎的一种&#xff0c;它擅长处理数据、人工智能等复杂的软件开发任务。互联网时代的到来也让Python的使用场景更加广泛&#xff0c;从前后端开发到数据分析。无论是学习Python的初学者还是有一定…

chatgpt赋能python:Python学习SEO指南:如何避免挂科

Python学习SEO指南&#xff1a;如何避免挂科 Python作为一门优秀的编程语言&#xff0c;被广泛应用于数据分析、人工智能、Web开发等领域。而如果你想在SEO领域中使用Python&#xff0c;那么就需要具备一定的编程基础和相关知识。在这篇文章中&#xff0c;我们将探讨如何学习P…

chatgpt赋能python:Python怎么不挂科?一位10年Python开发工程师的经验分享

Python怎么不挂科&#xff1f;一位10年Python开发工程师的经验分享 作为一种运行速度快且易于学习的编程语言&#xff0c;Python逐渐成为了很多编程爱好者和IT工程师的首选。但是&#xff0c;对于很多刚学习Python不久的人来说&#xff0c;由于学习方法不当&#xff0c;或者考…

chatgpt赋能python:大学Python挂科补考-怎么样才能顺利通过?

大学Python挂科补考 - 怎么样才能顺利通过&#xff1f; Python是一门广泛使用的编程语言&#xff0c;越来越多的大学选择将其纳入到计算机科学的课程中。然而&#xff0c;对于初学者来说&#xff0c;Python可能会变得很棘手&#xff0c;尤其是当你需要在考试或补考中获得高分时…

chatgpt赋能python:Python挂科了要重修么?

Python挂科了要重修么&#xff1f; 作为一名有10年python编程经验的工程师&#xff0c;我经常被问到这样的问题&#xff1a;“如果在学习和使用Python的过程中挂科了&#xff0c;是否需要重修&#xff1f;”这是一个非常好的问题&#xff0c;并且具有挑战性。在本文中&#xf…

chatgpt赋能python:Python课程为何成为大学生挂科的“罪魁祸首“?

Python课程为何成为大学生挂科的"罪魁祸首"&#xff1f; Python编程语言在今天的IT行业中已经成为了一种不可或缺的语言。事实上&#xff0c;Python已经成为了世界上最常用的编程语言之一&#xff0c;很多大学里也将Python编程语言作为教学课程的一部分。然而&#…

chatgpt赋能python:Python挂科了怎么办?

Python 挂科了怎么办&#xff1f; 如果你是一名学习 Python 编程语言的学生或者程序员&#xff0c;那么你可能会面临挂科的情况。虽然这是件令人沮丧的事情&#xff0c;但是你不必感到绝望。在这篇文章中&#xff0c;我们将介绍一些方法来帮助你重振旗鼓&#xff0c;重新学习并…

知网开放个人查重服务!

知网 转自&#xff1a;机器之心 不过&#xff0c;对于 2022 届的毕业生来说&#xff0c;知网的这一决定来得似乎晚了一点。 一年一度的毕业季要结束了&#xff0c;论文答辩也早已提上日程&#xff0c;在这之前你的论文查重了吗&#xff1f; 毕业论文是普通中等专业学校、高等专…

知网查重经验分享

22届电气专业毕业生&#xff0c;论文关于人脸识别方面的&#xff1b; 学校有两次免费查重机会&#xff0c;我们学校要求比较低&#xff0c;校内查重<50%&#xff0c;知网<30% 如果两次查重都不过就只能延毕......所以很珍惜这两次机会 我先用paperyy免费版查重&#x…

MySQL 查重

阅读目录 MySQL 数据单字段查询语句多个字段重复记录查询 MySQL 数据 CREATE TABLE test (Id int(11) NOT NULL AUTO_INCREMENT,title varchar(25) DEFAULT NULL COMMENT 标题,uid int(11) DEFAULT NULL COMMENT uid,money decimal(2,0) DEFAULT 0,name varchar(25) DEFAULT N…

优雅码住!ChatGPT的五大开源替代方案

自去年11月发布以来&#xff0c;ChatGPT吸引了全球各行业人士的注意力和想象力。人们将它用于各种任务和应用程序&#xff0c;而且它有可能改变流行的应用程序并创建新的应用程序。 但ChatGPT也引发了微软和谷歌等科技巨头之间的人工智能竞赛&#xff0c;使得该行业在大型语言模…

【AI热点技术】ChatGPT开源替代品——LLaMA系列之「羊驼家族」

ChatGPT开源替代品——LLaMA系列之「羊驼家族」 1. Alpaca2. Vicuna3. Koala4. ChatLLaMA5. FreedomGPT6. ColossalChat完整的 ChatGPT 克隆解决方案中英双语训练数据集完整的RLHF管线 相关链接 现在如果问什么最火&#xff0c;很多人第一反应肯定就是ChatGPT。的确&#xff0c…

【花雕学AI】超级提问模型大全!150个ChatGPT神奇示例,让你的聊天更有趣!

引言 你是否想要成为聊天高手&#xff0c;让你的对话更加有趣和深入&#xff1f;你是否想要掌握一些超级提问模型&#xff0c;让你的聊天更加有创意和挑战&#xff1f;你是否想要借助人工智能的力量&#xff0c;生成一些适合你的超级提问模型&#xff1f; 如果你的答案是肯定…

如何在教育与科研领域使用ChatGPT

ChatGPT提示是您给予ChatGPT的一系列指示&#xff0c;以便它能够按需生成结果。由于ChatGPT是一种会话型人工智能&#xff0c;因此它需要明确的指示才能生成准确的结果。 ChatGPT提示的结构通常是以指令格式呈现的。它看起来像是您在与AI交流&#xff0c;给予它执行特定任务的…