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 找到具體的安裝包,並安裝

<<<


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM