Jetson Xavier NX套件 Ubuntu 源码编译安装Qt5.15.6

环境:

硬件:Jetson Xavier NX 套件(500G SSD)
系统:Ubuntu 20.4
g++/gcc工具链:version9.4.0 (target: aarch64-linux-gnu)

问题:

限于篇幅,将编译过程中所有问题均记录于:
编译安装Qt5.15.6 过程中遇到的问题处理集

开始:

最近项目需要在Jetson Xavier NX 套件上进行应用开发,需要选择一个QT版本编译成目标板能够运行的库。我选择了5.15.6,因为有500G的SSD,所以我是在目标板上直接编译,而非交叉编译,交叉编译请注意编译工具的配置。网上有很多例子,遇到qtwebengine qtwayland qtmultimedia qtlocation 等库编译失败就在Configure 配置中skip了,但是刚好我这个项目需要用到qtmultimedia 和 qtlocation 。所以我准备不跳过任何组件,进行全编译。

准备工作

0、保证系统剩余空间再150G以上

1、Jetson Xavier NX系统安装、编译工具链

安装请参考我的 Jetson Xavier NX 套件将系统装到SSD

2、 交换空间再分配32G

由于Jetson Xavier NX仅有8GB内存,交换空间默认为4GB,在编译过程中,内存几乎占满,交换空间最大需要15G以上,所以建议给交换空间再分配16G以上,我直接再分配了32G在这里插入图片描述

//在根目录下创建一个名为“swapfile”交换空间文件,
//块大小bs为64MB,块的个数count为512,
//“swapfile”文件大小为64MB*512=32GB。
sudo dd if=/dev/zero of=/swapfile bs=64M count=512
//将空间格式化成swap格式 。此步需要等待已一定时间,空间越大,时间越长
sudo mkswap /swapfile
//激活swap空间,可通过free -h查看交换空间大小 ,注意,每次重启系统都需要执行激活空间。
//后面如果遇到ninja: build stopped: subcommand failed. 
//make[3]: *** [Makefile.gn_run:1189: run_ninja] Error 1   基本就是空间不足导致
sudo swapon /swapfile

3、 修改默认堆栈大小

由于Jetson Xavier NX的Ubuntu系统将线程默认栈空间大小调整为1024KB,导致某些库无法编译通过。

//以管理员身份打开/etc/security/limits.conf
sudo vim /etc/security/limits.conf
//按G来到配置文件底部,新增两行,将线程默认栈空间大小改为10240,修改如下:
ubuntu hard stack 10240     //此处ubuntu为用户名,请参照自己的用户名进行修改
ubuntu soft stack 10240
//重启生效
reboot

4、安装依赖

使用NVIDIA原始的源、不用修改国内源

4.0、QtBase相关依赖
sudo apt-get install bison build-essential qt5-default 
sudo apt-get install perl git gperf ruby 
sudo apt-get install libclang-10-dev llvm-10*
sudo apt-get install xcb* libxcb* libx11* libxkbcommon* libxrender* libxi-dev
4.1、QtOpenGL相关依赖
sudo apt-get install libgl1-mesa-dev libglu1-mesa-dev libegl1-mesa-dev freeglut* libgles* libglew*
4.2、QtWebengine相关依赖
sudo apt-get install flex libicu-dev libxslt-dev
sudo apt-get install libssl-dev libxcursor-dev libxcomposite-dev libxdamage-dev libxrandr-dev 
sudo apt-get install libdus* dbus*
sudo apt-get install libfontconfig1-dev fontconfig libcap-dev libxtst-dev libxext-dev
sudo apt-get install libpulse-dev libudev-dev libpci-dev libnss3-dev libasound2-dev libxss-dev 
sudo apt-get install libgstreamer-gl1.0-0 libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev
sudo apt-get install libcups2* pulseaudio* alsa-* mesa-* systemd* system-* libgudev-1.0-dev libatspi2.0* at-spi2-* libclipper-dev
sudo apt-get install nodejs gyp ninja-build libdrm-dev
4.3、 QtBlueTooth相关依赖
sudo apt-get install bluez* bluetooth libbluetooth*
4.4、Qtmultimedia相关依赖
sudo apt-get install libwayland-dev

编译

0、 下载Qt5.15.6源代码(可根据自己的需求下载不同版本)

1、解压源码

所有操作均在“/opt/”目录下
将qt-everywhere-opensource-src-5.15.6.tar.xz源码包复制到“/opt/”目录下

//进入opt目录
cd /opt/
//创建qt5.15.6文件夹 和 qt5.15.6_aarch64 文件夹
//用于编译好后安装qt的位置
sudo mkdir qt5.15.6_aarch64 
//用于解压源码和进行编译产生的中间文件存放
sudo mkdir qt5.15.6
//将源码解压到qt5.15.6,并进入该目录 
sudo tar xvf qt-everywhere-src-5.15.6.tar.xz -C ./qt5.15.6/
cd ./qt5.15.6/

2、创建自动配置脚本

//网上有些例子,在这里创建build文件夹,在这个文件夹下再创建配置脚本。但是我在自动配置时,
//始终要提示未找到all necessary libraries for qpa-xcb support in QtWebEngine。
//在源码目录直接创建则不会提示

//进入源码目录,创建脚本。
cd ./qt-everywhere-src-5.15.6/
sudo vim autoConfigure.sh

将以下内容复制到 autoConfigure中,其中配置选项意思请参考qt之configure选项说明

#!/bin/sh
./configure \
-platform linux-aarch64-gnu-g++ \
-prefix /opt/qt5.15.6_aarch64 \
-confirm-license \
-opensource \
-release \
-shared \
-make libs \
-nomake examples \
-nomake tests \
-dbus \
-opengl \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-xcb \
-alsa \
-gif \
-gstreamer 1.0 \
-pulseaudio \
-fontconfig \
-system-freetype

修改脚本权限(直接全权限)

sudo chmod 777 ./autoConfigure.sh

3、自动配置

sudo  ./autoConfigure.sh

执行时间,大概需要十分钟左右。执行完成后,认真查看自己需要的模块是否已被勾选,结果显示参考我的编译安装Qt5.15.6 过程中遇到的问题处理集

4、执行编译

sudo make -j6

由于JetsonXavierNX的CPU为6核,此处选择-j6。编译时间相当长,可以在下半时进行。
中间可能好几次因为错误被中断编译。不急不躁,我罗列出我遇到的问题以及处理办法在编译安装Qt5.15.6 过程中遇到的问题处理集中,供大家参考。

5、安装QT

sudo make install

很神奇的是,我在安装过程中,还会进行一些库的编译,估计是我在自动配置的文件里,配置参数不完全。在安装过程中也因为错误中断安装好几次,同样将问题罗列在上述问题处理集里了

6、安装QT Creator

sudo apt-get install qtcreator -y

7、Hello QT5.15.6 for Jetson Xavier NX

Jetson Xavier NX套件 Ubuntu 源码编译安装Qt5.15.6_第1张图片

参考:

1、JetsonXavierNX编译安装Qt5.12.9
2、rpms / qt6-qtmultimedia
3、error during compiling
4、树莓派Qt系列教程30:源码方式搭建Qt开发环境
5、NVIDIA Jetson AGX Xavier安装pyQT

你可能感兴趣的:(QT/C++,Jetson,Xavier,NX,套件,Linux,ubuntu,qt,计算机视觉)