0. 设备
- ROG 幻16 RTX3060
- 2T+512G PM9A1 SSD
- 8G+8G Memory
- Intel AX210NGW网卡
1. 安装Ubuntu20.04系统
- 先下载系统镜像
ubuntu-20.04.*.*-desktop-amd64.iso
【官网(不推荐)】https://ubuntu.com/download#download
【清华源】https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/
【中科大源】http://mirrors.ustc.edu.cn/ubuntu-releases/20.04/
【阿里云】http://mirrors.aliyun.com/ubuntu-releases/20.04/
1.1.0 Windows系统制作启动盘
- 下载
UltraISO软碟通
- 依次点击
文件-打开
,进入文件选择界面,选择之前下载的镜像文件打开。 - 插入U盘(至少8G)。
如果U盘内有数据记得备份
- 依次点击
启动-写入硬盘映像...
- 在弹出的界面中,确保硬盘驱动器为自己插入的u盘、映像文件为自己下载的镜像文件、写入方式为“USB-HDD+”。
- 最后点击
写入
,耐心等待启动盘制作完成。
1.1.1 Linux系统制作启动盘
- 插入U盘(至少8G)。
如果U盘内有数据记得备份
- 找到U盘
sudo fdisk -l
- 卸载U盘
#根据上一步得出的
sudo umount /dev/sdb1
- 格式化U盘
sudo mkfs.vfat /dev/sdb -I
- 制作启动盘
#”if=“后面是系统镜像路径 ”of=“后面是U盘路径
sudo dd if=~/Downloads/ubuntu-20.04.*.*-desktop-amd64.iso of=/dev/sdb status=progress
耐心等待启动盘制作完成。
1.2.0 使用启动盘安装Ubuntu系统
- 电脑插入网线,插入U盘,启动电脑,进入
Bios
。
[各品牌进入Bios按键图片] - 使启动盘U盘为第一启动项,选择保存并重启。
- 在Grub界面选择
Ubuntu
,然后会进入安装界面。 - 第一个界面:左侧选择
中文(简体)
,右侧选择安装Ubuntu
。 - 第二个界面:键盘布局默认即可,直接点击
继续
。 - 第三个界面:选择
正常安装
,勾选下方安装ubuntu时下载更新
和为图形或无线硬件,以及其他媒体格式安装第三方软件
。 - 第四个界面:选择
其他安装
,进入分区界面。 - 根据自身条件分区(后续研究完补充)
- 第五个界面:时区选择
Shanghai
。 - 第六个界面:设置用户名、密码、主机名。
- 等待安装完成。完成后重启电脑,拔掉U盘。
至此为止,Ubuntu系统安装完成。
2. (可选)安装网卡和显卡驱动
开机重启后发现竟然没有Wifi选项。逆天。
0. 安装git和cmake
sudo apt-get -y install git && sudo apt-get -y install cmake
1. 安装AX210网卡驱动
- 下载backport-iwlwifi
git clone https://git.kernel.org/pub/scm/linux/kernel/git/iwlwifi/backport-iwlwifi.git
cd backport-iwlwifi
- 编译安装
sudo make -j 16 && sudo make install
- 启用新的iwlwifi模块
sudo modprobe -r iwlwifi && sudo modprobe iwlwifi
2. 安装Nvidia-470驱动
- 显卡驱动加入PPA
sudo add-apt-repository ppa:graphics-drivers
sudo apt-get update
- 查看显卡信息与推荐驱动:
ubuntu-drivers devices
- 安装显卡驱动
sudo apt-get install nvidia-driver-470
- (关键)修改PRIME Profiles
打开NVIDIA X Server Setting
,点击PRIME Profiles
,然后选择NVIDIA On-Demand
,最后重启 修改grub
sudo gedit /etc/default/grub
(可选)移除之前添加的nomodeset
sudo update-grub
然后重启即可。
2. 配置Qt+OpenCV4.1.0&C++环境
2.1.0 配置基础环境
- 进入系统后,
软件更新器
选择更新
。 - 更新完成后,打开
软件和更新
,换源。 ps:或者直接修改文件/etc/apt/sources.list
,参考清华源 - 换源完成后,更新一下系统
sudo apt-get -y update
sudo apt-get -y upgrade
- 重新启动电脑,
reboot
软件
中搜索安装Qv2ray
。
`Qv2ray`停止更新,可以选择`v2rayA`或`clash for windows`
- 然后下载打包好的软件包(除iso文件)
【私有云】https://pan.xiadengma.com/s/ndT6 密码:xiadengma - 在下载的时间里,打开
设置
依次点击电源-息屏从不-自动挂起关闭
和鼠标和触摸板-设置鼠标速度
。 - 等待下载完成,下载完成后,解压下载的压缩包,
unzip ***.zip
- 先设置
Qv2ray
,然后打开设置
依次点击网络代理-手动
,输入Qv2ray
中设置的参数。 - 安装gcc和g++
sudo apt-get -y install gcc g++
2.2.0 安装Qt Creater
cd命令
进入解压完成后的压缩包- 给
qt-***.run
权限,sudo chmod 777 qt-***.run
- 运行安装文件,
./qt-***.run
- yilu next,quan gou xuan
2.3.0 安装OpenCV4.1.0
- 安装
cmake-gui
sudo apt-get -y install cmake-gui
- 更新一下系统
sudo apt-get -y update
sudo apt-get -y upgrade
- 安装依赖包
sudo apt-get -y install libjasper1 libjasper-dev libgtk-3-dev libgtk2.0-dev pkg-config build-essential cmake libgtk-3-dev libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev libopenexr-dev libxvidcore-dev libx264-dev libatlas-base-dev gfortran ffmpeg
- 解压下载的
opencv4.1.0文件
和opencv_contrib4.1.0文件
- 在他们的同级目录新建一个
build
文件夹,然后cd
进build
文件夹,运行cmake-gui
- 在跳出的
cmake-gui
界面中,sources code
选择opencv4.1.0文件夹的路径
,build the binaries
选择build文件夹的路径
- 然后点击
Configure
,选择Unix Makefiles(默认)
和Use default native compilers(默认)
,再点击Finsh
Configure
结束后,如果cmake-gui
的主界面仍有红色区域,则再次点击Configure
,直到红色区域完全消失。- 然后继续配置
CMAKE_BUILD_TYPE
处选择Release
OPENCV_EXTRA_MODULES_PATH
处选择 opencv_contrib-4.1.0
的路径,精确到/modules
目录- 勾选
OPENCV_GENERATE_PKGCONFIG
- 再次点击
Configure
进行配置。 ps:如果有错误就去检查vpn是否设置正确。 - 点击
Generate
,出现Generating done
则可以关闭cmake-gui
。 cd
进build
文件夹路径
sudo make -j $(nproc)
ps:如果出现报错就说明上一步有问题,清空build文件夹
,重新cmake-gui
操作。
13. make
完成后
sudo make install
到此为止,opencv环境配置完成。
2.4.0 配置Qt Creater
- 打开Qt
- 设置多线程编译:
工具-选项-Kits-构建套件
中点击自动检测中的Desktop
,点击Environment
后面的Change
,输入MAKEFIAGS=-j $(nproc)
- 设置Qt代码风格-自动格式化:
- 依次点击
帮助-关于插件
,在搜索框内搜索Beautifier
,勾选,重新启动Qt
- 安装
clang-format9
sudo apt-get -y install clang-format-9
sudo ln -s /usr/bin/clang-format-9 /usr/bin/clang-format
- 依次点击
工具-选项-Beautifier
,勾选Enable auto format on file save
,选择ClangFormat
- 点击上方
Clang Format
,点击浏览
,搜索clang-format
,选择clang-format9
- 选择
Use customized style
- 添加
``` text
# 语言: None, Cpp, Java, JavaScript, ObjC, Proto, TableGen, TextProto
Language: Cpp
# BasedOnStyle: LLVM
# 访问说明符(public、private等)的偏移
AccessModifierOffset: -4
# 开括号(开圆括号、开尖括号、开方括号)后的对齐: Align, DontAlign, AlwaysBreak(总是在开括号后换行)
AlignAfterOpenBracket: Align
# 连续赋值时,对齐所有等号
AlignConsecutiveAssignments: true
# 连续声明时,对齐所有声明的变量名
AlignConsecutiveDeclarations: true
# 左对齐逃脱换行(使用反斜杠换行)的反斜杠
AlignEscapedNewlinesLeft: true
# 水平对齐二元和三元表达式的操作数
AlignOperands: true
# 对齐连续的尾随的注释
AlignTrailingComments: true
# 允许函数声明的所有参数在放在下一行
AllowAllParametersOfDeclarationOnNextLine: true
# 允许短的块放在同一行
AllowShortBlocksOnASingleLine: false
# 允许短的case标签放在同一行
AllowShortCaseLabelsOnASingleLine: false
# 允许短的函数放在同一行: None, InlineOnly(定义在类中), Empty(空函数), Inline(定义在类中,空函数), All
AllowShortFunctionsOnASingleLine: Empty
# 允许短的if语句保持在同一行
AllowShortIfStatementsOnASingleLine: false
# 允许短的循环保持在同一行
AllowShortLoopsOnASingleLine: false
# 总是在定义返回类型后换行(deprecated)
AlwaysBreakAfterDefinitionReturnType: None
# 总是在返回类型后换行: None, All, TopLevel(顶级函数,不包括在类中的函数),
# AllDefinitions(所有的定义,不包括声明), TopLevelDefinitions(所有的顶级函数的定义)
AlwaysBreakAfterReturnType: None
# 总是在多行string字面量前换行
AlwaysBreakBeforeMultilineStrings: false
# 总是在template声明后换行
AlwaysBreakTemplateDeclarations: false
# false表示函数实参要么都在同一行,要么都各自一行
BinPackArguments: true
# false表示所有形参要么都在同一行,要么都各自一行
BinPackParameters: true
# 大括号换行,只有当BreakBeforeBraces设置为Custom时才有效
BraceWrapping:
# class定义后面
AfterClass: false
# 控制语句后面
AfterControlStatement: false
# enum定义后面
AfterEnum: false
# 函数定义后面
AfterFunction: false
# 命名空间定义后面
AfterNamespace: false
# ObjC定义后面
AfterObjCDeclaration: false
# struct定义后面
AfterStruct: false
# union定义后面
AfterUnion: false
# catch之前
BeforeCatch: true
# else之前
BeforeElse: true
# 缩进大括号
IndentBraces: false
# 在二元运算符前换行: None(在操作符后换行), NonAssignment(在非赋值的操作符前换行), All(在操作符前换行)
BreakBeforeBinaryOperators: NonAssignment
# 在大括号前换行: Attach(始终将大括号附加到周围的上下文), Linux(除函数、命名空间和类定义,与Attach类似),
# Mozilla(除枚举、函数、记录定义,与Attach类似), Stroustrup(除函数定义、catch、else,与Attach类似),
# Allman(总是在大括号前换行), GNU(总是在大括号前换行,
# 并对于控制语句的大括号增加额外的缩进), WebKit(在函数前换行), Custom
# 注:这里认为语句块也属于函数
BreakBeforeBraces: Allman
# 在三元运算符前换行
BreakBeforeTernaryOperators: true
# 在构造函数的初始化列表的逗号前换行
BreakConstructorInitializersBeforeComma: false
# 每行字符的限制,0表示没有限制
ColumnLimit: 200
# 描述具有特殊意义的注释的正则表达式,它不应该被分割为多行或以其它方式改变
CommentPragmas: '^ IWYU pragma:'
# 构造函数的初始化列表要么都在同一行,要么都各自一行
ConstructorInitializerAllOnOneLineOrOnePerLine: false
# 构造函数的初始化列表的缩进宽度
ConstructorInitializerIndentWidth: 4
# 延续的行的缩进宽度
ContinuationIndentWidth: 4
# 去除C++11的列表初始化的大括号{后和}前的空格
Cpp11BracedListStyle: false
# 继承最常用的指针和引用的对齐方式
DerivePointerAlignment: false
# 关闭格式化
DisableFormat: false
# 自动检测函数的调用和定义是否被格式为每行一个参数(Experimental)
ExperimentalAutoDetectBinPacking: false
# 需要被解读为foreach循环而不是函数调用的宏
ForEachMacros: [ foreach, Q_FOREACH, BOOST_FOREACH ]
# 对#include进行排序,匹配了某正则表达式的#include拥有对应的优先级,
# 匹配不到的则默认优先级为INT_MAX(优先级越小排序越靠前),
# 可以定义负数优先级从而保证某些#include永远在最前面
IncludeCategories:
- Regex: '^"(llvm|llvm-c|clang|clang-c)/'
Priority: 2
- Regex: '^(<|"(gtest|isl|json)/)'
Priority: 3
- Regex: '.*'
Priority: 1
# 缩进case标签
IndentCaseLabels: false
# 缩进宽度
IndentWidth: 4
# 函数返回类型换行时,缩进函数声明或函数定义的函数名
IndentWrappedFunctionNames: false
# 保留在块开始处的空行
KeepEmptyLinesAtTheStartOfBlocks: true
# 开始一个块的宏的正则表达式
MacroBlockBegin: ''
# 结束一个块的宏的正则表达式
MacroBlockEnd: ''
# 连续空行的最大数量
MaxEmptyLinesToKeep: 1
# 命名空间的缩进: None, Inner(缩进嵌套的命名空间中的内容), All
NamespaceIndentation: Inner
# 使用ObjC块时缩进宽度
ObjCBlockIndentWidth: 4
# 在ObjC的@property后添加一个空格
ObjCSpaceAfterProperty: false
# 在ObjC的protocol列表前添加一个空格
ObjCSpaceBeforeProtocolList: true
# 在call(后对函数调用换行的penalty
PenaltyBreakBeforeFirstCallParameter: 19
# 在一个注释中引入换行的penalty
PenaltyBreakComment: 300
# 第一次在<<前换行的penalty
PenaltyBreakFirstLessLess: 120
# 在一个字符串字面量中引入换行的penalty
PenaltyBreakString: 1000
# 对于每个在行字符数限制之外的字符的penalty
PenaltyExcessCharacter: 1000000
# 将函数的返回类型放到它自己的行的penalty
PenaltyReturnTypeOnItsOwnLine: 60
# 指针和引用的对齐: Left, Right, Middle
PointerAlignment: Left
# 允许重新排版注释
ReflowComments: true
# 允许排序#include
SortIncludes: true
# 在C风格类型转换后添加空格
SpaceAfterCStyleCast: false
# 在赋值运算符之前添加空格
SpaceBeforeAssignmentOperators: true
# 开圆括号之前添加一个空格: Never, ControlStatements, Always
SpaceBeforeParens: ControlStatements
# 在空的圆括号中添加空格
SpaceInEmptyParentheses: false
# 在尾随的评论前添加的空格数(只适用于//)
SpacesBeforeTrailingComments: 2
# 在尖括号的<后和>前添加空格
SpacesInAngles: false
# 在容器(ObjC和JavaScript的数组和字典等)字面量中添加空格
SpacesInContainerLiterals: true
# 在C风格类型转换的括号中添加空格
SpacesInCStyleCastParentheses: true
# 在圆括号的(后和)前添加空格
SpacesInParentheses: false
# 在方括号的[后和]前添加空格,lamda表达式和未指明大小的数组的声明不受影响
SpacesInSquareBrackets: false
# 标准: Cpp03, Cpp11, Auto
Standard: Cpp11
# tab宽度
TabWidth: 4
# 使用tab字符: Never, ForIndentation, ForContinuationAndIndentation, Always
UseTab: Never
```
额外安装:安装Glog
sudo apt-get -y install autoconf automake libtool libgflags-dev libgoogle-glog-dev
- 额外安装:安装大华工业相机驱动
sudo chmod 777 Mv....
sudo ./Mv...
- 额外设置:QT高分辨率适配
echo "export QT_AUTO_SCREEN_SCALE_FACTOR=1" >> ~/.profile
到此为止,Qt和OpenCV配置完成。
参考资料
- 在Linux平台上用上AX210NGW网卡
- ROG幻14安装Ubuntu20.04及nvidia-455显卡驱动
- Linux安装NVIDIA显卡驱动的正确姿势
Comments | NOTHING