QT5交叉編譯入門級教程(arm64、mips64)
什么是交叉編譯?
簡單說,就是在當(dāng)前系統(tǒng)平臺(tái)上,開發(fā)編譯運(yùn)行于其它平臺(tái)的程序。
比如本文硬件環(huán)境是x86平臺(tái),但是編譯出來的程序是在arm64架構(gòu)、mips64等架構(gòu)上運(yùn)行
本文使用的操作系統(tǒng):統(tǒng)信UOS家庭版22.0
一、安裝QT5(如果已安裝跳過此步):
sudo apt update sudo apt install qtbase5-dev -y sudo apt install qtcreator -y
二、安裝編譯相關(guān)組件
sudo apt install build-essential libgl1-mesa-dev gperf libclang-dev -y
#安裝python環(huán)境(如果你的程序中不需要調(diào)用python,可以不裝)
sudo apt install python -y sudo apt install python-dev -y sudo apt install python-pip -y
#安裝aarch64(arm64)編譯鏈工具。國產(chǎn)CPU,如飛騰、華為麒麟等都是這個(gè)架構(gòu)
sudo apt install g++-aarch64-linux-gnu -y sudo apt install gcc-aarch64-linux-gnu -y
#安裝mips64el編譯鏈工具。龍芯3A3000、3A4000等是此架構(gòu)。龍芯最新的LoongArch架構(gòu)似乎還沒有編譯鏈工具
sudo apt install gcc-mips64el-linux-gnuabi64 -y sudo apt install g++-mips64el-linux-gnuabi64 -y
三、下載QT5源碼
QT官方下載地址:Index of /archive/qt
https://download.qt.io/archive/qt
根據(jù)自身需求選擇一個(gè)版本下載。源碼版本不需要和當(dāng)前安裝的一致,但最好不要低于當(dāng)前安裝的版本。QT6和QT5差別太大,不要選擇。
這里我隨手選了一個(gè)5.12.2的版本,可以直接在網(wǎng)頁上下載、用下載工具下載、還可以使用命令下載:
#下載源碼: wget https://download.qt.io/archive/qt/5.12/5.12.2/single/qt-everywhere-src-5.12.2.tar.xz #下載好后,解壓源碼: tar -xvf qt-everywhere-src-5.12.2.tar.xz?
四、配置和編譯源碼
1.配置編譯QT5的aarch64架構(gòu)源碼
進(jìn)入剛才解壓好的源碼目錄中,打開終端輸入:
#配置編譯參數(shù) ./configure -release -opensource -confirm-license -xplatform linux-aarch64-gnu-g++ -prefix /usr/local/qt5.12.2arm -nomake examples -no-opengl -silent -qpa linuxfb
如圖:
其中:/usr/local/qt5.12.2arm 是編譯后的安裝目錄,可自行修改
執(zhí)行成功的話,如圖:
編譯:
make -j 12
-j 12參數(shù)表示使用12個(gè)線程進(jìn)行編譯,根據(jù)電腦的CPU線程數(shù)進(jìn)行設(shè)置即可。
編譯過程較長,如果編譯過程中需要進(jìn)行其它操作,適當(dāng)減少線程數(shù),以免操作太卡。
編譯成功后,如圖:
將編譯好的文件安裝到指定位置(安裝位置在前面配置參數(shù)時(shí)已設(shè)置):
sudo make install
2.配置編譯QT5的mips64架構(gòu)源碼
先將前面解壓的qt-everywhere-src-5.12.2文件夾改名或者刪除,然后重啟一下電腦!
為什么要重啟?因?yàn)槲以诰幾g完aarch64之后,接著編譯mips64時(shí)編譯出錯(cuò),重啟之后才正常。
為了避免不必要的錯(cuò)誤,因此建議先重啟一下。
使用命令重新解壓源碼:
tar -xvf qt-everywhere-src-5.12.2.tar.xz
QT源碼里并沒有mips64的編譯項(xiàng),因此這里需要手動(dòng)創(chuàng)建。
進(jìn)入剛才解壓的源碼目錄,再進(jìn)入其下級目錄:qtbase/mkspecs 如圖:
找到linux-aarch64-gnu-g++文件夾,將其復(fù)制一份。如圖:
將其改名為:linux-mips64el-g++ 然后雙擊進(jìn)入,里面有兩個(gè)文件:qmake.conf、qplatformdefs.h
打開qmake.conf文件,打開后如圖:
將aarch64全部替換為mips64el、gnu替換成gnuabi64,替換后如圖:
修改完成,保存關(guān)閉文件即可。
回到源碼根目錄,在終端中執(zhí)行參數(shù)配置:
./configure -release -opensource -confirm-license -xplatform linux-mips64el-g++ -prefix /usr/local/qt5.12.2mips64 -nomake examples -no-opengl -silent -qpa linuxfb
如圖:
執(zhí)行成功如圖:
編譯安裝和aarch64是一樣的:
make -j12 #編譯源碼。注意根據(jù)自已CPU的線程數(shù)修改12這個(gè)數(shù) sudo make install #安裝編譯好的源碼
五、配置QT
打開Qt Creator,選擇 工具->選項(xiàng)->Kits->Qt Versions 如圖:
點(diǎn)擊右側(cè)的“添加...”按鈕,在彈出的窗口中選擇前面編譯安裝好的QT目錄下的qmake,如圖:
添加好后,點(diǎn)擊右下角的“Apply”按鈕。然后點(diǎn)擊“構(gòu)建套件(Kit)”選項(xiàng)卡:
點(diǎn)擊右側(cè)“添加”按鈕,配置如圖:
其中,名稱可自行修改;
編譯器可以選擇gcc,只是我比較喜歡Clang,所以這里選的Clang;
注意:Qt mkspec 一定要填!
至于紅色的感嘆號,這個(gè)不用在意,不影響編譯。
mips64的配置也差不多:
六、驗(yàn)證測試
現(xiàn)在,創(chuàng)建一個(gè)工程來驗(yàn)證一下交叉編譯是否正常。
先測試aarch64架構(gòu):
需要注意的是,異架構(gòu)的程序是不能直接運(yùn)行的。所以我們不運(yùn)行它,直接點(diǎn)擊左下方的“錘子”或者按Ctrl+B來構(gòu)建。
編譯沒有出錯(cuò)。使用file命令,看一下編譯后的文件:
如圖所示,編譯出來的程序確實(shí)是ARM aarch64 架構(gòu)!
再看一下MIPS64的編譯結(jié)果:
OK,搞定收工..
關(guān)于龍芯最新的“龍”(LoongArch)架構(gòu),似乎還沒有編譯鏈工具,因此還沒法交叉編譯。。
到此這篇關(guān)于QT5交叉編譯保姆級教程(arm64、mips64)的文章就介紹到這了,更多相關(guān)QT5交叉編譯內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
C語言控制臺(tái)實(shí)現(xiàn)字符飛機(jī)大戰(zhàn)
這篇文章主要為大家詳細(xì)介紹了C語言控制臺(tái)實(shí)現(xiàn)字符飛機(jī)大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12深入理解memmove()與memcpy()的區(qū)別以及實(shí)現(xiàn)方法
本篇文章是對memmove()與memcpy()的區(qū)別以及實(shí)現(xiàn)方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-05-05C++?Qt開發(fā)之關(guān)聯(lián)容器類使用方法詳解
當(dāng)我們談?wù)摼幊讨械臄?shù)據(jù)結(jié)構(gòu)時(shí),順序容器是不可忽視的一個(gè)重要概念,Qt?中提供了豐富的容器類,用于方便地管理和操作數(shù)據(jù),本章我們將主要學(xué)習(xí)關(guān)聯(lián)容器,主要包括?QMap?,QSet和?QHash,感興趣的朋友跟著小編一起來學(xué)習(xí)吧2023-12-12C語言數(shù)據(jù)結(jié)構(gòu)二叉樹先序、中序、后序及層次四種遍歷
這篇文章主要介紹了C語言數(shù)據(jù)結(jié)構(gòu)二叉樹先序、中序、后序及層次四種遍歷方式,具有一定的知識性參考價(jià)值,需要的小伙伴可以先看一下2022-02-02