1. 程式人生 > 其它 >Linux Ubuntu 搭建Qt RK3399(ARMv8)編譯 執行 除錯環境

Linux Ubuntu 搭建Qt RK3399(ARMv8)編譯 執行 除錯環境

1、主機交叉QMake生成

已驗證的環境:Ubuntu18.04 +Qt5.12.1

Qt5.12.1Index 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 installgcc-aarch64-linux-gnusudog++-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安裝(待驗證)

aptinstall 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.3Qt配置目標機裝置

建議root登入,免得各種許可權拒絕

4、GDB除錯

4.1目標機安裝gdbserver(選擇原始碼編譯或下載現成的)

4.1.1:獲得GDBServer

方法一: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 -daarch64-linux-gnu-gdbservergdbserver

資料夾lib裡檔案放到/usr/lib

4.2 目標機設定允許root登入

sudoservicesshdrestart重啟服務

4.3 主機安裝gdb-multiarch

sudo aptinstall 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 installlibgl1-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庫:使用aptsearchlibqt5serialport找到具體的安裝包,並安裝

<<<