前言
rk3588開發車機,方案上提供的宿主機只是編譯rk sdk的版本,並未編譯好Qt,那麼需要自行交叉編譯Qt系統。選擇的Qt的版本爲5.12.10。
下載並打開宿主機,只有sdk,並沒有交叉編譯的Qt。
下載Qt5.12.10的開源軟件(方案商提供)。
下載提供的交叉編譯工具鏈(方案商提供)。
下載編譯依賴的目標編譯系統(方案商提供)
cd ~/tool
tar xvf aarch64-rockchip1031-linux-gnu.tar.gz
發現單獨提供的tool沒有bin下的g++工具,於是只好對比一下,發現開發板給過來是一樣的,有bin:
於是copy過去,直接使用sdk的tool了:
建立一個env.sh腳本:
#!/bin/sh
export PATH=$PATH:/home/ht/work/tool/toolchain/bin
使用路徑:
source env.sh
發現與方案上給過來的平臺不匹配,但是都是連接到同一個目標了,先直接幹試一試。
在編譯過程中,基本是不會依賴編譯目標系統得庫,所以一般都無需配置sysroot,如果依賴,比如編譯支持ffmpeg的opencv則依賴交叉編譯系統已經編譯完的ffmpeg,則講ffmpeg放入sysroot,也可以直接單獨引入額外的庫,方式很多,不深究。
cd ~/work/src
tar xvf qt-everywhere-src-5.12.10.tar.xz
修改平臺配置文件:
cd /home/ht/work/src/qt-everywhere-src-5.12.10/qtbase/mkspecs/linux-aarch64-gnu-g++
gedit qmake.conf
修改編譯器的名稱:
然後配置(這裏使用平臺配置,則需要定位平臺配置文件,還有一種方式直接替換交叉編譯器的前綴,但此處不是):
這裏建立個文件,方便調試,切換到qt的源碼文件夾:
#!/bin/bash
./configure \
-prefix /home/ht/work/build-qt5.12.10 \
-sysroot /home/ht/work/sysroot \
-confirm-license \
-opensource \
-release \
-make libs \
-xplatform linux-aarch64-gnu-g++ \
-no-opengl \
-no-feature-completer \
-verbose
然後配置:
chmod +x mk.sh
./mk.sh
這裏有一次入坑編譯失敗,是路徑用戶設置爲yang,實際爲ht,所以root路徑找不到的導致的:
Ht爲用戶,/home/ht/xxx配置成功了:
先使用多線程:
make -j8
再跑一次單make。(會出現各種各樣的錯誤,同樣的虛擬機同樣的代碼也會有不同的錯誤,遇到問題的時候,首先嚐試解決,解決不了想辦法繞過去,如果真的遇到兼容性問題,就不是一下能解決的,所以一般都是提供編譯好的虛擬機了)。
make
make install