Linux Ubuntu 搭建Qt RK3399(ARMv8)编译 运行 调试环境

1、主机交叉QMake生成

已验证的环境:Ubuntu18.04 + Qt5.12.1

Qt5.12.1 : Index of /archive/qt/5.12/5.12.1  , 下载  qt-everywhere-src-5.12.1.tar.xz

前置软件包

gcc-aarch64-linux-gnusudo, g++-aarch64-linux-gnu : ARM64的C与C++的交叉编译器 

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

 

模板:

QT_QPA_DEFAULT_PLATFORM = linuxfb                   # !新增部分,避免目标板运行程序时提示linuxfb找不到的错误
QMAKE_CFLAGS_RELEASE += -O2 -march=armv8-a -lts     # !可能可以去掉?
QMAKE_CXXFLAGS_RELEASE += -O2 -march=armv8-a -lts   # !可能可以去掉?

执行configure(qt-everywhere-src-5.12.1/configure),生成Makefile

#!/bin/sh
./configure \
-prefix /usr/lib/qt5.12.1-arm64 \ #!!!指定安装路径
-xplatform linux-aarch64-gnu-g++ \ #!!!指定arm64平台(根据qtbase/mkspec目录选择)
-confirm-license \
-opensource \
-release \
-make libs \
-pch \
-qt-libjpeg \
-qt-libpng \
-qt-zlib \
-no-opengl \
-no-sse2 \
-no-openssl \
-no-cups \
-no-glib \
-no-dbus \
-no-xcb \
-no-separate-debug-info

编译&安装

sudo make && make install

/!\ 路径英文,su权限

主要对象qmake生成:

2、主机QtCreator配置

使用官网的.run文件或apt来安装,使用同一版本号,或相近版本号,若有问题则遍历其他版本更换

2.1 指定gcc与g++:指定apt安装的编译工具

2.2 指定qmake:指定编译好的qmake(编译好的路径下/bin/qmake)

3、目标机运行环境

3.1 安装Qt运行环境

apt安装 (待验证)

apt install qt5-default

3.2 配置通过ssh运行X图形软件

【1】 编辑 /etc/ssh/sshd_config

启用AllowTcpForwarding

启用X11Forwarding

X11DisplayOffset设定为10

启用X11UseLocalHost

【2】 配置环境变量 /etc/profile

export DISPLAY=":0.0"

export XAUTHORITY="/home/用户名/.Xauthority"

3.3 Qt配置目标机设备

建议root登录,免得各种权限拒绝

4、GDB调试

4.1目标机安装gdbserver(选择源码编译或下载现成的)

4.1.1:获得GDB Server

方法一:GDB源码安装(Index of /gnu/gdb),只编译GDBServer

./gdb-8.1/gdb/gdbserver/configure \ #一定不能在同级目录下使用./configure来操作
    --prefix=/home/jibril/Desktop/workspace/gdb/gdb-8.1-build/gdb8.1-arm64-server \ # 自定一个路径
    --host=aarch64-linux-gnu \ #指定运行主机为ARM64
    --target=aarch64-linux-gnu #指定目标主机为ARM64
make CC=aarch64-linux-gnu-gcc #使用交叉工具链
make install
=====================
Ubuntu可能会遇到 make texinfo 啥的错误,安装 texinfo 就好

方法二:下载现成的 GDB8.1版本

链接:https://pan.baidu.com/s/1N_xc6chaKxy3_Mn64XwDmA 
提取码:16se 

4.1.2 安装GDB

把文件夹bin里的文件放到/usr/bin,并作软连接gdbserver(指向aarch64-linux-gnu-gdbserver): ln -d aarch64-linux-gnu-gdbserver gdbserver

文件夹lib里文件放到/usr/lib

 

4.2 目标机设置允许root登录

sudo service sshd restart 重启服务

4.3 主机安装gdb-multiarch

sudo apt install gdb-multiarch,并在Qt中指定

4.4 配置运行变量

上述两个目标板子上的环境变量 DISPLAY 和 XAUTHORITY,板子一般是没有的,要自己添加上去,否则运行不起来

或者直接手动在Qt里面添加固定的,这样就不用每次启动去获取板子的系统变量了:

通过/etc/profile 加入 export来添加

正确调试图:

 

过程笔记

1、Deepin(深度) Qt5.12.1 执行configure 会报 ERROR: C++11 <random> is required and is missing or failed to compile,没有找到有效方法

2、Qt5.14.2:执行configure时,大多指令都变得不可使用(如-prefix -xplatform等)

3、Qt5.14.1、Qt5.14.0、Qt5.15.0:执行make时报openglextension找不到模块的错误,无法继续

4、PC环境提示 GL/gl.h:No such file.  :  apt install libgl1-mesa-dev libglu1-mesa-dev freeglut3-dev

5、错误提示  /usr/lib/qt5.12.1-arm64/lib/libQt5Core.so: undefined reference to `getentropy@GLIBC_2.25' : glibc的库版本不对,要安装 glibc  >>>

指定的编译工具与安装时指定的编译工具不一致

6、运行时缺少l ibqt5serialport 库:使用apt search libqt5serialport 找到具体的安装包,并安装

<<<

posted @ 2022-02-16 11:04  音吹丝汀  阅读(1746)  评论(0编辑  收藏  举报