Linux Ubuntu 搭建Qt RK3399(ARMv8)編譯 執行 除錯環境
1、主機交叉QMake生成
已驗證的環境:Ubuntu18.04 +Qt5.12.1
Qt5.12.1 :
,下載前置軟體包:
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原始碼安裝(
),只編譯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找到具體的安裝包,並安裝
<<<