2025年了,你还不会配置Jetson Orin NX嘛?

我的设备为:Jetson Orin NX 16G + JetPack6.1+达妙科技载板

帅气的Jetson Orin NX拿到手了,都2025年了你还不会配置嘛???让我一篇文章带你不糟蹋这一美丽的艺术品!

Cuda、CuDNN、TensorRT配置

首先我们拿出一块刚刚烧录完的崭新板子,具体烧录的教程可以参考我的这一篇博客:Jetson Orin NX烧录+设备树更改?看这一篇就够了! - SkyXZ - 博客园接着我们输入 nvcc -V会发现终端提示如下:bash: nvcc: command not found,有些教程会跟你说只要在bashrc中输入环境命令就好了,但是其实你就是没有安装任何的cuda,因为接下来你运行以下的命令会发现根本找不到nvcc!

jetson@ubuntu:/usr/local$ ls -l /usr/local/cuda-12.6/bin/nvcc
ls: cannot access '/usr/local/cuda-12.6/bin/nvcc': No such file or directory

为了进一步探究我们到底缺少了什么我们可以先安装Jetson-stats来查看我们当前设备的状态,我们输入以下命令

sudo apt install python3-pip
sudo -H pip3 install -U jetson-stats
sudo jtop

等待安装完成之后并输入jtop之后有以下内容即代表安装完成

接着我们继续输入以下命令便能看到我们当前设备的信息(因为不排除Nvidia的Manager烧录有Bug)

sudo jetson_release   #查看当前的设备的信息

会发现我们的新烧录好的设备里面没有CUDA和TensorRT,那么这时候我们便需要进一步安装JetPack了,JetPack 是 Nvidia为 Jetson系列开发板开发的一款软件开发包里面包含了常见的所有工具,并且在安装 JetPack的时候,会自动的帮你匹配所需CUDA、cuDNN、TensorRT等,我们在终端中输入以下命令:

sudo apt update
sudo apt install nvidia-jetpack -y

等个几分钟便能全部安装好,如果下载速度缓慢是网络问题,这个问题自行解决。接着我们继续输入一开始的命令便能发现我们需要的cuda和tensorrt都安装完成了

sudo jetson_release   #查看当前的设备的信息

然后我们打开bashrc,把以下内容添加进~/.bashrc即可完成cuda的配置

sudo gedit  ~/.bashrc    #进入bashrc并在最后添加即可
export CUBA_HOME=/usr/local/cuda
export LD_LIBRARY_PATH=/usr/local/cuda/lib64:$LD_LIBRARY_PATH
export PATH=/usr/local/cuda/bin:$PATH
source ~/.bashrc

source之后我们再输入nvcc -V会发现CUDA会有输出了

接着我们需要来处理CuDNN,虽然我们看到我们已经安装了cudNN但是我们还需要将对应的头文件、库文件放到cuda目录,cuDNN的头文件在:/usr/include,库文件位于:/usr/lib/aarch64-linux-gnu,运行以下命令即可:

cd /usr/include && sudo cp cudnn* /usr/local/cuda/include #复制头文件
cd /usr/lib/aarch64-linux-gnu && sudo cp libcudnn* /usr/local/cuda/lib64 #复制库文件
# 修改文件权限
sudo chmod 777 /usr/local/cuda/include/cudnn*
sudo chmod 777 /usr/local/cuda/lib64/libcudnn*

然后我们运行以下命令对cuDNN进行验证

sudo cp -r /usr/src/cudnn_samples_v9/ ~/.
cd ~/cudnn_samples_v9/mnistCUDNN
sudo chmod 777 ~/cudnn_samples_v9
sudo make clean && sudo make
./mnistCUDNN

如果出现如下内容即代表安装成功,配置没问题

OpenCV with CUDA

还记得我们上面查看板子信息的时候还有一个红色的No嘛,这个代表着我们板子上的OpenCV目前还不支持CUDA 加速,无法充分利用我们Orin NX强大的GPU,接着让我们开始配置这一项

首先我们先卸载默认OpenCV

sudo apt purge libopencv* -y
sudo apt autoremove
sudo apt update
sudo apt upgrade

然后我们安装我们需要的一些依赖

  • Generic tools
sudo apt install build-essential cmake pkg-config unzip yasm git checkinstall
  • Image I/O libs
sudo apt install libjpeg-dev libpng-dev libtiff-dev
  • Video/Audio Libs - FFMPEG, GSTREAMER, x264 and so on
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libavresample-dev
sudo apt install libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
sudo apt install libxvidcore-dev x264 libx264-dev libfaac-dev libmp3lame-dev libtheora-dev
sudo apt install libfaac-dev libmp3lame-dev libvorbis-dev
  • OpenCore - Adaptive Multi Rate Narrow Band(AMRNB) and Wide Band(AMRWB) speech codec
sudo apt install libopencore-amrnb-dev libopencore-amrwb-dev
  • Cameras programming interface libs
sudo apt-get install libdc1394-22 libdc1394-22-dev libxine2-dev libv4l-dev v4l-utils
cd /usr/include/linux
sudo ln -s -f ../libv4l1-videodev.h videodev.h
cd ~

如果系统换源之后提示说E: Unable to locate package libdc1394-25-dev>,那么需要执行以下步骤来启用完整的软件源(包括 universemultiverse 仓库),完成以下步骤之后即可进行下载了

sudo nano /etc/apt/sources.list
#将以下内容添加进去之后按 Ctrl + O,然后按 Enter 保存,接着按 Ctrl + X 退出
deb http://ports.ubuntu.com/ubuntu-ports focal main universe multiverse restricted
deb http://ports.ubuntu.com/ubuntu-ports focal-updates main universe multiverse restricted
deb http://ports.ubuntu.com/ubuntu-ports focal-security main universe multiverse restricted
sudo apt-get update
  • GTK lib for the graphical user functionalites coming from OpenCV highghui module
sudo apt-get install libgtk-3-dev
  • Python libraries for python3
sudo apt-get install python3-dev python3-pip
sudo -H pip3 install -U pip numpy
sudo apt install python3-testresources
  • Parallelism library C++ for CPU
sudo apt-get install libtbb-dev
  • Optimization libraries for OpenCV
sudo apt-get install libatlas-base-dev gfortran
  • Optional libraries
sudo apt-get install libprotobuf-dev protobuf-compiler
sudo apt-get install libgoogle-glog-dev libgflags-dev
sudo apt-get install libgphoto2-dev libeigen3-dev libhdf5-dev doxygen

接着我们下载OpenCV并解压

cd ~/Downloads  #Cuda12需要较新版本的OpenCV
wget -O opencv.zip https://github.com/opencv/opencv/archive/refs/tags/4.10.0.zip
wget -O opencv_contrib.zip https://github.com/opencv/opencv_contrib/archive/refs/tags/4.10.0.zip
unzip opencv.zip
unzip opencv_contrib.zip

接着进行Cmake一下

cd opencv-4.10.0/
mkdir build && cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local \
-D BUILD_opencv_python2=1 -D BUILD_opencv_python3=1 -D WITH_FFMPEG=1 \
-D CUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-12.6 \ #修改为自己的cuda路径
-D WITH_TBB=ON -D ENABLE_FAST_MATH=1 -D CUDA_FAST_MATH=1 -D WITH_CUBLAS=1 \
-D WITH_CUDA=ON -D BUILD_opencv_cudacodec=OFF -D WITH_CUDNN=ON \
-D OPENCV_DNN_CUDA=ON \
-D CUDA_ARCH_BIN=8.7 \
-D WITH_V4L=ON -D WITH_QT=OFF -D WITH_OPENGL=ON -D WITH_GSTREAMER=ON \
-D OPENCV_GENERATE_PKGCONFIG=ON -D OPENCV_PC_FILE_NAME=opencv.pc \
-D OPENCV_ENABLE_NONFREE=ON \
#修改为自己的opencv_contrib下载路径
-D OPENCV_EXTRA_MODULES_PATH=/home/jetson/Downloads/opencv_contrib-4.10.0/modules \
-D INSTALL_PYTHON_EXAMPLES=OFF -D INSTALL_C_EXAMPLES=OFF -D BUILD_EXAMPLES=OFF ..

过程中可能会要下载一些文件,我把这些文件最新的仓库附在下面,便于大家直接下载,然后复制到Downloads/opencv-4.6.0/build/downloads/{对应的文件夹}文件夹没有的可以自己创建

https://github.com/WeChatCV/opencv_3rdparty.git #wechat_qrcode

当Cmake完成之后我们往上翻打印输出的Info有如下输出即代表Cmake成功

接着我们开始编译

nproc  #查看设备核心数
make -j$(nproc) #-j4编译时间约为 1~3 小时
sudo make install #安装

编译完成不报错即代表编译完成

安装过程不报错即为安装完成

最后我们再次执行以下jtop验证以下是否安装完成,出现如下现象则代表成功

至此我们的安装全部结束啦!!!

2025年了,你还不会配置Jetson Orin NX嘛?的更多相关文章

  1. 在Linux(Ubuntu/openSUSE/CentOS)下配置ASP.NET(Apache + Mono)

    [题外话] 闲的无聊竟然想尝试测试自己做的项目在不同操作系统上的性能表现,所以决定试试在Linux上部署Apache和Mono的环境.由于平时很少接触Linux,所以从网上找了几篇文章(附在相关链接中 ...

  2. [转] vim自定义配置 和 在ubnetu中安装vim

    Ubuntu 12.04安装vim和配置   问题: ubuntu默认没有安装vim,出现: jyg@ubuntu:~$ vim test.cThe program 'vim' can be foun ...

  3. Hibernate 基础配置及常用功能(三)

    本章重点讲述Hibernate对象的三种状态以及如何配置二级缓存 有关Hibernate的三种状态如何相互转换网上都能查到,官方文档描述的也比较详细.这里主要是针对几个重点方法做代码演示. 一.状态转 ...

  4. Spring MVC错误页面配置

    当前SpringMVC非常流行,在大多数情况,我们都需要自定义一些错误页面(例如:401, 402, 403, 500...),以便更友好的提示.对于spring mvc,这些当然是支持自定义的,sp ...

  5. 使用 Fluent API 配置/映射属性和类型(摘自微软Data Access and Storage)

    使用 Fluent API 配置/映射属性和类型 使用实体框架 Code First 时,默认行为是使用一组 EF 中内嵌的约定将 POCO 类映射到表.但是,有时您无法或不想遵守这些约定,需要将实体 ...

  6. 为docker配置固定ip

    docker默认使用bridge模式,通过网桥连接到宿主机,而容器内部的ip则从网桥所在的ip段取未用的ip.这样做一个不方便的地方在于容器内部的ip不是固定的,想要连接容器时只能通过映射到宿主机的端 ...

  7. ASP.NET 5 入门 (2) – 自定义配置

    ASP.NET 5 入门 (2) – 自定义配置 ASP.NET 5 理解和入门 建立和开发ASP.NET 5 项目 初步理解ASP.NET5的配置 正如我的第一篇文章ASP.NET 5 (vNext ...

  8. 百度在线编辑器UEditor(v1.3.6) .net环境下详细配置教程

    UEditor是百度开发团队奉献的一款很不错的在线编辑器.在百度自己很多产品上都有应用,本文主要是该编辑器的配置教程. 1.下载UEditor,当前最新版本是1.3.6.这里下载的.net版本,选择U ...

  9. vim IDE平台-打造属于自己的配置

    vim IDE平台-打造属于自己的配置 一.前言 目前工作环境基本以Linux为主,自然用到VIM也很多,很早就对如何提高VIM的使用效率有所研究,限于时间关系,也没做个系统记录和资料积累,时间久了又 ...

  10. spring第一课,beans配置(上)

    1.通过property配置bean <!-- 配置一个 bean --> <bean id="helloWorld" class="com.atgui ...

随机推荐

  1. 云原生周刊:CNCF 宣布 KEDA 毕业 | 2023.8.28

    开源项目推荐 KDash KDash 是一个用 Rust 构建的简单快速的 Kubernetes 仪表板.它提供了一个终端界面,用于监视和管理 Kubernetes 集群.该仪表板具有多种功能,包括节 ...

  2. KubeSphere 边缘节点 IP 冲突的分析和解决思路分享

    在上一篇监控问题排查的文章中,笔者分析了 KubeSphere 3.1.0 集成 KubeEdge 中的边缘监控原理和问题排查思路,在介绍 EdgeWatcher 组件时提到了"边缘节点的内 ...

  3. Games101 基于蒙特卡洛积分的光线路径追踪 作业7 框架解读

    目录 1 前言 2 辐射度量学 3 Coding Pseudo Code 3.1 uniform random point in triangle in 3D 3.2 Multithreading 3 ...

  4. JavaScript String 对象-常用知识点

    JavaScript String 对象-常用知识点 对象用于处理文本(字符串). 对象创建方法: new String(). String 对象属性 属性 描述 constructor 对创建该对象 ...

  5. mysql重置id排列重新排序

    1.删除表中的原有的主键字段 ALTER TABLE table2 DROP id 2.表中重新创建一个字段 ALTER TABLE table2 ADD id int NOT NULL FIRST; ...

  6. games101_Homework6

    实现 Ray-Bounding Volume 求交与 BVH 查找 在本次编程练习中,你需要实现以下函数: • IntersectP(const Ray& ray, const Vector3 ...

  7. Xshell终端连接服务器慢,问题解决方法

    Xshell连接慢的话,先在xshell中设置中点隧道然后把转发xshell的勾取消 /etc/ssh/sshd_config 里边修改第115行UseDNS把注释取消然后yes改为no 然后重启ss ...

  8. SPI接口,如何对W25Q64进行读写操作?深度解析

    ​ 一.SPI概述 SPI(SerialPeripheralInterface)是一种同步串行通信协议,广泛应用于微控制器和外围设备之间的数据传输.它由摩托罗拉公司开发,具有全双工通信能力,即可以同时 ...

  9. 7、listener监听

    启动远程图形界面登录的工具 [root@db11g ~]# vncserver 监听 监听的启动 [oracle@db11g ~]$ lsnrctl start 判断监听是否启动 [oracle@db ...

  10. Android之JNI开发

    JNIJNI是Java Native Interface的缩写,俗称Java本地接口,是Java语言提供的用于Java和C/C++相互沟通的机制,Java可以通过JNI调用本地的C/C++代码,本地的 ...