2017年的時候我發表過一篇樹莓派 編譯安裝Python3.5 + PyQT5.8 + Eric6 的文章 鏈接在此,由於當時搞完了再寫的,回憶過程中有些遺漏,導致留言里抱怨問題太多……這次特地邊搞邊寫…… 之前上一篇已經交代了系統已經編譯安裝了Python 3.8.3 和Vscode ,VSCod ...
2017年的時候我發表過一篇樹莓派 編譯安裝Python3.5 + PyQT5.8 + Eric6 的文章 鏈接在此,由於當時搞完了再寫的,回憶過程中有些遺漏,導致留言里抱怨問題太多……這次特地邊搞邊寫……
之前上一篇已經交代了系統已經編譯安裝了Python 3.8.3 和Vscode ,VSCode 網上教程一堆,幾步搞定,不多說,安裝後顯示為Code - OSS (headmelted)
編譯安裝 redis6.0 也比較簡單,很順利沒有太多麻煩,這裡不贅述。
說明下,其實我所有的命令都是在su下完成,全部用的proxychain4 代理下載的,真實命令只有 p4 apt install xxxxx , 這裡為了嚴謹沒有直接這麼寫
64bit beta 沒有預裝QT,於是
sudo apt-get install qt5-default qtcreator qtdeclarative5-dev qtmultimedia5-dev libqt5sql5-mysql
命令一頓擼,安裝啟動後正常,版本qt5.11 , QTcreator4.8,繼續,在pi用戶的downlaods 目錄下:
git clone --recursive https://github.com/uglide/RedisDesktopManager.git -b 2020 rdm2020 && cd ./rdm2020
下載後,用Qtcreator 打開src中的工程文件,發現問題很多,缺模塊,一頓操作補充模塊,發現插件版本又不對……算了,按照官方要求,直接上Qt5.13 編譯安裝Qt5.13 全程用了4小時,大家要有心理準備 , 下載源碼:
wget http://download.qt.io/archive/qt/5.13/5.13.2/single/qt-everywhere-src-5.13.2.tar.xz
國外有一篇寫編譯qt5.12的文章,鏈接在此 微雪也有一篇寫的很多人看過,都是在32位系統下的,64位系統有很多不同,
先下載樹莓派的配置文件
我是直接 訪問 https://github.com/oniongarlic/qt-raspberrypi-configuration 打包下載解壓後
把裡面的 linux-rpi4-v3d-g++ 文件夾放到 qt-everywhere-src-5.13.2/qtbase/mkspecs 目錄里
把 common 目錄里的raspberrypi.conf 放到 qt-everywhere-src-5.13.2/qtbase/mkspecs/common 裡面
按照這樣編譯不了的,報錯: 不支持參數 -mfpu=crypto-neon-fp-armv8
因為 arm 開發文檔裡面有寫 相關鏈接
Note
The -mfpu option is only valid with the armv8a-arm-none-eabi target. It is not possible to override the default FPU for the aarch64-arm-none-eabi target. However, you can prevent the use of floating-point instructions or floating-point registers for the aarch64-arm-none-eabi target with the -mgeneral-regs-only option.
到 linux-rpi4-v3d-g++ 目錄里,打開 qmake.conf 修改
QMAKE_CFLAGS += -march=armv8-a -mtune=cortex-a72
保存,安裝依賴
apt install build-essential libfontconfig1-dev libdbus-1-dev libfreetype6-dev libicu-dev libinput-dev libxkbcommon-dev libsqlite3-dev libssl-dev libpng-dev libjpeg-dev libglib2.0-dev libraspberrypi-dev
這樣子編譯會出現錯誤:
Note: The following modules are not being compiled in this configuration:
3dcore
3drender
…………
繼續補充依賴:
apt install ibgles2-mesa-dev libgbm-dev libclang-dev
同時在終端下運行:raspi-config 在 Advanced Options -> GL Driver -> GL 2 選擇此項
現在再 到 qt-everywhere-src-5.13.2 中運行:
./configure -platform linux-rpi4-v3d-g++ -v -opengl es2 -eglfs -no-gtk -opensource -confirm-license -release -reduce-exports -force-pkg-config -nomake examples -no-compile-examples -skip qtwayland -skip qtwebengine -skip qtscript -no-feature-geoservices_mapboxgl -qt-pcre -no-pch -ssl -tslib -evdev -system-freetype -fontconfig -glib -prefix /opt/Qt5.13.2 -qpa eglfs -recheck-all
經過一堆檢查操作,沒有報錯就要開始編譯, 由於我是8gb沒搞交換記憶體等,而且有風扇吹,直接上-j 4
make -j 4
經過4個小時的漫長等待,如果沒有報錯就可以進行下一步了
後面發現還有坑,這裡先補一些依賴
apt install libxcb-xfixes0-dev
make install
後續還會提示一些七七八八問題,遇到一個解決一個:
/usr/bin/ld: 找不到 -lclip2tri
/usr/bin/ld: 找不到 -lpoly2tri
/usr/bin/ld: 找不到 -lclipper
主要是這6個第三方問題:
qt-everywhere-src-5.13.2/qtlocation/src/3rdparty/clip2tri
qt-everywhere-src-5.13.2/qtlocation/src/3rdparty/clipper
qt-everywhere-src-5.13.2/qtlocation/src/3rdparty/poly2tri
qt-everywhere-src-5.13.2/qtvirtualkeyboard/src/plugins/openwnn/3rdparty/openwnn
qt-everywhere-src-5.13.2/qtvirtualkeyboard/src/plugins/pinyin/3rdparty/pinyin
qt-everywhere-src-5.13.2//qtvirtualkeyboard/src/plugins/tcime/3rdparty/tcime
遇到就去這些目錄裡面,make 一下:然後再make install,此過程歷時1個多小時
最終沒有再報錯結束,這時候打開 QTcreator 打開 工具 -> 選項 Kits 中 QtVersion手工設置 路徑,同時Kits中也添加一個設置,如圖
這時候再打開之前的rdm2020目錄中src目錄,選擇工程文件,選擇自己的環境Qt5.13.2,然後
再rdm2020中新建 build-rdm-default-Debug 、build-rdm-default-Release 、build-rdm-default-Profile、以及 /bin/linux/release 目錄
按照要求 要 pip3 install -r src/py/requirements.txt
但是可能有些不一定能裝上,這邊我缺的不多,直接運行以下你內容
pip3 install bitstring cbor msg phpserializ apt install python3-pandas
修改配置others/resource 中的文件 qt.conf
[Paths] Libraries=/opt/Qt5.13.2/lib Plugins=/opt/Qt5.13.2/plugins Qml2Imports=/opt/Qt5.13.2/qml
以及 src/resources/rdm.sh 修改為
#!/bin/bash DIR=$(dirname "$(readlink -f "$0")") export LD_LIBRARY_PATH="$DIR/../Qt5.13.2/lib":$LD_LIBRARY_PATH $DIR/rdm
選擇 - 工具 - 外部 - QT語言家 - 發佈翻譯,生成 翻譯的qm文件
選擇 構建 - 構建項目“rdm" 不會太久,10來分鐘後,完成,警告不用管,不報錯就行,點擊運行如圖
這裡補充一點:
我這邊發現無法切換語言和字體,選擇後重新啟動還是原來一樣,別的沒問題,修改源代碼app/app.cpp 以及 翻譯 .ts 文件名規則,還是不行,debug顯示 載入load() 為 True 沒問題,有待解決:
QTranslator translator; if (translator.load(QLocale(), "rdm", ".",QLatin1String(":/translations",".qm"))){ qDebug() << "Load translations file for locale:" << locale; QCoreApplication::installTranslator(&translator); }else { qDebug() << "Load translations failed:"; } /* QTranslator* translator = new QTranslator((QObject*)this); if (translator->load(QString(":/translations/rdm_") + locale)) { qDebug() << "Load translations file for locale:" << locale; QCoreApplication::installTranslator(translator); } else { qDebug() << "Load translations failed:" << QString(":/translations/rdm_") + locale; delete translator; } */ }
還修改了下 src/modules/updater/updater.cpp 文件,註釋以下代碼,不想讓它每次都去訪問升級地址:
/* manager->get(QNetworkRequest(updateUrl));*/
具體有其他問題可以留言
:)