Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境

这篇具有很好参考价值的文章主要介绍了Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

最近公司给了我一块Jetson Orin Nano的板子,先刷了系统(1.Jetson Orin Nano Developer Kit系统刷机)又让我搭建交叉编译环境,所以有了下面的文章

一 :Qt5.14.2交叉编译环境安装

1.准备

1.1设备环境

1.1.1 Server:
Ubuntu20.04:
Qt 源码 5.14.2
Qt 软件 5.14.2
gcc 版本  9.4.0
g++ 版本 9.4.0
1.1.2 Jetson Orin Nano :
Ubuntu 20.04

1.2 Qt相关下载地址

1.2.1 Qt源码下载

Qt源码下载(最好下载tar.xz,tar格式可能在windows下编辑过,后期可能会出现乱码的情况)

Index of /archive/qt/5.14/5.14.2/single
Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

1.2.2 Qt软件下载地址

https://download.qt.io/archive/qt/5.14/5.14.2/    

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

1.3 gcc和g++安装

Ubuntu 20.04系统默认安装g++和gcc版本是9.4.0,如果Ubuntu系统上没有g++和gcc安装命令:

sudo apt-get install gcc-aarch64-linux-gnu  g++-aarch64-linux-gnu

 安装好之后查看版本(如下图)

aarch64-linux-gnu-gcc -v

aarch64-linux-gnu-g++ -v

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

1.4 Jetson Orin Nano Developer Kit 系统安装方法

Jetson 系统 自行安装

注意

- `SDK Manager`下使用的包是`JetPack5.1.1(rev.1);`
- 使用命令行安装使用的`BSP`包是`Jetson_Linux_R35.3.1_aarch64.tbz2`
  `Sample Root Filesystem`是`Tegra_Linux_Sample-Root-Filesystem_R35.3.1_aarch64.tbz2`

 2.Jetson Orin Nano Developer Kit 环境准备

2.1 设置root账号密码

sudo passwd root#设置Jetson Orin Nano root的账号密码

2.2 设置ssh

开启ssh保证其它用户能够通过ssh root@ip 访问,开启ssh为了文件拷贝等操作。

2.3 更新资源列表

sudo apt-get update #只是更新了apt的资源列表,没有真正的对系统执行更新。apt-get update是同步 /etc/apt/sources.list 和 /etc/apt/sources.list.d 中列出的源的索引,这样才能获取到最新的软件包。
sudo apt-get upgrade #对比本地软件版本与源上软件版本,并更新本地版本到源上最新版本。

2.4 安装Qt依赖库

2.4.1 安装Qt依赖库
sudo apt-get install '.*libxcb.*'  libxrender-dev libxi-dev libfontconfig1-dev libudev-dev
sudo apt-get install libgles2-mesa-dev libgl1-mesa-dev
2.4.2 软连接opengl es库

进入Jetson Orin Nano/usr/lib/aarch64-linux-gnu/tegra-egl 目录,执行:

sudo ln -s libGLESv2_nvidia.so.2 libGLESv2.so  
sudo ln -s libEGL_nvidia.so.0 libEGL.so

实际上只是将这两个英伟达提供的 gl 动态库重命名,不同的设备厂商提供的支持库名字可能会有差异;

3.Server编译Qt源码

3.1 在server上安装交叉编译器并配置环境变量

3.1.1 安装命令:
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu

安装好后使用

which aarch64-linux-gnu-gc c#命令查看其安装位置

我的位置在`/usr/bin/aarch64-linux-gnu-gcc `下
安装后面所需要的其它工具

sudo apt-get install git bison python gperf pkg-config
sudo apt-get install make libclang-dev build-essential 

3.2 配置环境变量

编译/etc/profile文件,

sudo vim /etc/profile

在编译模式下先按`i`进行文本插入,在文件底部加入` export PATH="/usr/bin:$PATH"`
然后按`ESC` 并输入`wq`保存。最后进行`source /etc/profile `更新环境变量,查看`/usr/bin`是否已经加入到环境变量,使用`echo ${PATH}`, 结果如下:

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

3.3 编译源码

3.3.1解压Qt源码
mkdir /opt/Qt5JetsonOrinNano
cd /opt/Qt5JetsonOrinNano
sudo chown username:username /opt/Qt5JetsonOrinNano#(username 是/home/ 下你的用户名) 修改Qt5JetsonOrinNano组
sudo tar xf qt-everywhere-src-5.14.2.tar.xz
3.3.2 同步Jeston Orin Nano上的库到本地

/opt/Qt5JetsonOrinNano目录下使用mkdir sysroot创建sysroot文件夹,然后同步Jetson Orin Nano上面的库到Server

rsync -avz root@JetsonOrinNanoIp:/lib sysroot 
rsync -avz root@ JetsonOrinNanoIp:/usr/include sysroot/usr
rsync -avz  root@ JetsonOrinNanoIp:/usr/lib sysroot/usr
3.3.3 修改sysroot软链接

在同步库后,然后需要修改sysroot里面的软链接,里面有很多软连接使用的都是绝对路径,那就会直接链接到你PC的/usr、/lib目录里面去,那肯定是错的,我们希望它们链接到 sysroot里面对应的库。所以我们需要把绝对路径改成相对路径。直接用网上现成的python脚本完成(有时会连接超时,自己想办法下载)。

sudo wget https://github.com/Kukkimonsuta/rpi-buildqt/blob/master/scripts/utils/sysroot-relativelinks.py

 脚本内容如下:

#!/usr/bin/env python
import sys
import os

# source: https://raw.githubusercontent.com/riscv/riscv-poky/master/scripts/sysroot-relativelinks.py

# Take a sysroot directory and turn all the absolute symlinks and turn them into
# relative ones such that the sysroot is usable within another system.

if len(sys.argv) != 2:
    print("Usage is " + sys.argv[0] + "<directory>")
    sys.exit(1)

topdir = sys.argv[1]
topdir = os.path.abspath(topdir)

def handlelink(filePath, subdir):
    link = os.readlink(filePath)
    if link[0] != "/":
        return
    if link.startswith(topdir):
        return
    
    newLink = os.path.relpath(topdir+link, subdir)

    print("\t%s replacing %s => %s" % (filePath, link, newLink))
    os.unlink(filePath)
    os.symlink(newLink, filePath)

for subdir, dirs, files in os.walk(topdir):
    for file in files:
        filePath = os.path.join(subdir, file)
        if os.path.islink(filePath):
            handlelink(filePath, subdir)

然后给sysroot-relativelinks.py添加权限

    sudo chmod +x sysroot-relativelinks.py

运行文件

./sysroot-relativelinks.py sysroot #修改sysroot下相关Lib的软链接
rsync -avz root@JetsonOrinNanoIp:/lib sysroot #我这是不放心又同步一次
rsync -avz root@ JetsonOrinNanoIp:/usr/include sysroot/usr
./sysroot-relativelinks.py sysroot
3.3.4创建Jetson Orin Nanoqmake.conf文件

先查看devices下支持的设备

ls qt-everywhere-src-5.14.2/qtbase/mkspecs/devices/

查看qt源码下支持的设备,由于没有 Nano 文件夹,我们使用相似的linux-jetson-tx1-g++`复制一份`jetson orin nano`的文件夹,

cp -r qt-everywhere-src-5.14.2/qtbase/mkspecs/devices/linux-jetson-tx1-g++/ qt-everywhere-src-5.14.2/qtbase/mkspecs/devices/linux-jetson-orin-nano/

修改`qt-everywhere-src-5.14.2/qtbase/mkspecs/devices/linux-jetson-orin-nano/qmake.conf`文件,内容如下:

#
# qmake configuration for the Jetson Orin Nano boards running Linux For Tegra
#
# Note that this environment has been tested with X11 only.
#
# A typical configure line might look like:
# configure \
#   -device linux-jetson-orin-nano \
#   -device-option CROSS_COMPILE=/usr/bin/aarch64-linux-gnu- \
#   -sysroot /opt/Qt5JetsonOrinNano/sysroot

include(../common/linux_device_pre.conf)

QMAKE_INCDIR_POST += \
    $$[QT_SYSROOT]/usr/include \
    $$[QT_SYSROOT]/usr/include/aarch64-linux-gnu

QMAKE_LIBDIR_POST += \
    $$[QT_SYSROOT]/usr/lib \
    $$[QT_SYSROOT]/lib/aarch64-linux-gnu \
    $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu
    QMAKE_RPATHLINKDIR_POST += \
    $$[QT_SYSROOT]/usr/lib \
    $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu \
    $$[QT_SYSROOT]/lib/aarch64-linux-gnu

QMAKE_INCDIR_EGL = $$[QT_SYSROOT]/usr/lib/aarch64-linux-gnu/tegra-egl
DISTRO_OPTS                  += aarch64
COMPILER_FLAGS               += -march=armv8-a+crc+crypto
EGLFS_DEVICE_INTEGRATION = eglfs_kms_egldevice
include(../common/linux_arm_device_post.conf)
load(qt_config)
3.3.5建立编译文件夹
mkdir Qt5Build 
cd  Qt5Build

配置make 的编译环境

sudo ../qt-everywhere-src-5.14.2/configure -opengl es2 -xcb  -device linux-jetson-orin-nano -device-option CROSS_COMPILE=/usr/bin/aarch64-linux-gnu- -sysroot /opt/Qt5JetsonOrinNano/sysroot -prefix /usr/local/Qt5JetsonOrinNano -opensource -confirm-license -skip qtmultimedia -skip qtscript -skip qtwebengine -force-debug-info -skip qtdatavis3d -skip qtlocation -nomake examples -make libs -pkg-config -no-eglfs  -no-use-gold-linker -v

出现错误([(1条消息) Ubuntu18源码编译安装qt5.15.3和MeshLab踩坑_error: feature 'xcb' was enabled, but the pre-cond_JaceYangg的博客-CSDN博客]

ERROR: Feature 'xcb' was enabled, but the pre-condition 'features.thread &&..... #出现这个问题,把上面命令中的 -xcb-xlib配置项去掉。可以-xcb 不删除。
sudo apt-get install '^libxcb.*-dev' libx11-xcb-dev libglu1-mesa-dev libxrender-dev libxi-dev libxkbcommon-dev libxkbcommon-x11-dev

如果还有问题,再查找其解决方案

编译:

sudo make -j4

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

等待编译完成之后再进行安装

sudo make install

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

 安装后的目录如下:

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

查看编译生成目录下的qmake是否存在,用于配置qtcreator的qmake环境

 Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

把编译生成的相关库同步到Jetson Orin Nano上。

sudo rsync -avz sysroot/usr/local/Qt5JetsonOrinNano root@ JetsonOrinNanoIp:/usr/local

至此QT源码编译完成。

4.Server交叉编译代码到Jetson Orin Nano上

4.1 在Server上创建一个`test`文件夹

 mkdir testCrossCompiler &&cd testCrossCompiler
 touch hello.cpp
 vim hello.cpp
#include <QCoreApplication>
#include <QDebug>
 
int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);
 
    qDebug() << "Hello World";
 
    return a.exec();
}

4.2使用编译Qt源码生成的qmake编译项目 生成.pro文件

4.2.1 在testCrossCompiler目录下使用`qmake`命令
/opt/Qt5JetsonOrinNano/sysroot/usr/local/Qt5JetsonOrinNano/bin/qmake -project

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

4.2.2 使用`qmake`生成`Makefile`文件

 Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

 4.2.3 使用命令`make`生成`arm`文件

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2

4.2.4 拷贝文件到`Jetson Orin Nano`上运行
scp ./testCrossCompiler  nvidia@JetsonOrinNanoIp:/home/nvidia/Downloads/test
4.2.5 在Jetson Orin Nano上运行编译生成的文件
./testCrossCompiler

Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境,Jetson Orin Nano,qt,开发语言,jetson,JetsonOrinNano,ubuntu20.04,交叉编译环境,qt 5.14.2


下面会出Server上配置ARM的交叉编译环境。

好久没有写文章了。上面的应该勉强能看。如有问题请提出,我不会修改的(哈哈)。如果按照步骤弄不成,多找找自身的原因(手动滑稽)。

最后最后,有问题请在评论区提出,我会帮助解决。感谢查看文章来源地址https://www.toymoban.com/news/detail-652844.html

到了这里,关于Linux Server 20.04 Qt5.14.2配置Jetson Orin Nano Developer Kit 交叉编译环境的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • QT5.14.2 + VS2019 + VTK8.2.0配置环境

    1.1.1 软件下载地址:Index of /archive/qt 1.1.2 安装的时候需要注意: 安装时候至少把MSVC2017 64bit选择上。 用VS2019时候,打开Qt Creator,点击工具-选项,构建套件中可能会显示黄色或者红色感叹号,这个时候就需要额外的配置。  打开VS2019,点击顶部工具 - 获取工具和功能 - 在跳出的

    2024年02月06日
    浏览(71)
  • VS2022+qt5.14.2配置qcustomplot2.1.16(坑很多)

    QCustomPlot 是一个超强超小巧的qt绘图类,非常漂亮,非常易用,只需要加入一个qcustomplot.h和qcustomplot.cpp文件即可使用。 官方网址:https://www.qcustomplot.com/ 源码下载地址:https://www.qcustomplot.com/index.php/download 将qcustomplot.h和qcustomplot.cpp2个文件添加到QT项目,如下: 在项目属性Qt

    2024年02月13日
    浏览(50)
  • Windows+Qt5.14.2+android x86配置与处理adb报错

    资源下载 可在部分国内镜像源下载Qt5.14.2:Index of /qt/archive/qt/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror 其他工具 android studio:下载 Android Studio 和应用工具 - Android 开发者  |  Android Developers sdk manager 、ndk、java 安装过程 根据qt5.14.2自助选择需要安装的anroid组件等、vs2

    2024年01月20日
    浏览(42)
  • 在Visual Studio 2019中使用Qt5.14.2并配置相关路径(含opencv/halcon)联合编程配置

    (1)Qt下载安装 参考链接:https://blog.csdn.net/weixin_41977337/article/details/106859728 1、QT下载 推荐下载Qt5.12.3版本(5.12为LTS长期支持版本),官方下载链接: http://download.qt.io/archive/qt/. 清华源连接: https://mirrors.tuna.tsinghua.edu.cn/qt/archive/qt/5.14/5.14.2/ 版本5.14.2下载: 断网即可跳过注册账

    2024年02月04日
    浏览(48)
  • ubuntu20.04安装librtmp库 并在QT5中引入librtmp库

    音视频技术学习记录 安装 openssl 和 zlib 在其他博客中有提到openssl版本过高会引起librtmp的编译安装出错,因为这里我没遇到这样的情况,所以我直接安装了openssl默认的1.1版本。如果遇到相关问题,可以安装1.0版本的openssl。 用命令安装的库对应的include和lib文件的默认路径分别

    2023年04月08日
    浏览(41)
  • 基于QT5.14.2的MQTT通信

    一、概述 这个资料写的很好:MQTT协议,终于有人讲清楚了 参考图: 默认的Qt环境是不能使用MQTT的,但Qt官方提供了基于MQTT的封装,需要通过源码进行编译。 可以在下面的链接中获取到: https://github.com/qt/qtmqtt 在dev分支中可以选择MQTT版本,选择最新的下载到本地。 注意一定

    2024年02月10日
    浏览(45)
  • VsCode+QT5.14.2安装部署详细教程

    1、下载QT 注意事项 : 最好不要选择在线安装包,我安装了两天!!!快安装完成了结果是一个什么签名还是密码提示不识别。 从Qt 5.15开始,开源离线安装程序不再可用。官网原文如下:   Due to The Qt Company offering changes, open source offline installers are not available any more since Q

    2024年02月04日
    浏览(52)
  • qt5.14.2 独立msvc环境搭建(不安装vs)

    一般情况下msvc下的qt开发,无论你是用qtcreator还是vs都推荐安装对应vs版本,这样是最省事和便捷的,但在有些情况下不便安装vs但项目又需要使用msvc,则可以只安装msvc c++编译器,步骤如下: 备注:文内用到所有包均上传到不限速的阿里云盘,欢迎关注 阿里云盘分享 https:

    2024年02月04日
    浏览(50)
  • arm鲁班猫lubanCat rk3588 ubuntu20.04下源码编译安装qt5.12.5

    ubuntu-18.04上通过源码来编译及安装Qt-5.12库 QT官方线上文档for linux qt源码下载地址 进入下面目录下载 【new_archive/qt/5.12/5.12.5/single/qt-everywhere-src-5.12.5.tar.xz】 将压缩包放到Ubuntu某目录,并进入解压: 初步解压出:qt-everywhere-src-5.12.5.tar 最终得到:qt-everywhere-src-5.12.5 或者【右键】

    2024年04月11日
    浏览(59)
  • Qt | Qt For Android、Qt5.14.2安卓开发环境搭建详细步骤

    1、简介 搭建Qt For Android开发环境需要安装的软件有: JAVA SDK Android SDK Android NDK 其中Android NDK直接下载的压缩包,解压即可。 Android SDK提供了安装包和压缩包,用哪个都行。 Qt For Android开发环境的搭建说简单也简单,说复杂也比较复杂。说它简单是因为安装的软件就一两个,安

    2024年02月02日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包