統(tǒng)信UOS系統(tǒng)開發(fā)筆記(三):從Qt源碼編譯安裝之編譯安裝Qt5.12.8
前言
??上一篇,是使用Qt提供的安裝包安裝的,有些場(chǎng)景需要使用到自己編譯的Qt,所以本篇如何在統(tǒng)信UOS系統(tǒng)上編譯Qt5.12.8源碼。
統(tǒng)信UOS系統(tǒng)版本
??系統(tǒng)版本:
??

Qt源碼下載
??參考博文《獲取下載Qt安裝包,Qt源碼全國(guó)網(wǎng)址備忘錄(不用注冊(cè)Qt賬戶,即可下載各版本Qt安裝包和Qt源碼包)》
??需要哪個(gè)版本下哪個(gè)版本,筆者經(jīng)常使用得是Qt5.9和Qt5.12兩個(gè)大版本,本次下載Qt5.12.8:
??

??由于是自己編譯的,我們一般在可以安裝Qt版本的時(shí)候使用Qt安裝版本的QtCreator,但是在本篇文章,我們使用源碼編譯Qt的源碼,下一篇用源碼編譯QtCreator,用以補(bǔ)全完全從源碼編譯搭建環(huán)境(PS:方便基于其他國(guó)產(chǎn)芯片使用,x86和amd64不能直接安裝)。
Qt從源碼編譯安裝(廢棄流程)
步驟一:下載解壓
??

tar xvf qt-everywhere-src-5.12.8.tar.xz
??

步驟二:配置Qt
??調(diào)整當(dāng)前目錄:
cd /home/yang/work/src/qt-everywhere-src-5.12.8
??然后配置:
./configure -prefix /home/yang/work/qt5.12.8 \-release \-opensource \-platform linux-g++ \-make libs \-optimized-qmake \-pch \-qt-libjpeg \-qt-zlib \-no-opengl \-skip qt3d \-skip qtcanvas3d \-skip qtpurchasing \-no-sse2 \-no-openssl \-no-cups \-no-glib \-no-iconv \-nomake examples \-nomake tools \-skip qtvirtualkeyboard \-v
??

./1.sh
??

??

?? 輸入y
??

步驟三:編譯錯(cuò)誤“ERROR: Feature ‘precompile_header’ was enabled, but the pre-condition ‘tests.precompile_header’ failed.”解決
??這個(gè)問題查看是因?yàn)閱⒂昧薴eature,直接禁用掉-no feature-precomplile_header:
??修改1.sh的配置參數(shù):
#!/bin/sh./configure -prefix /home/yang/work/qt5.12.8 \-release \-opensource \-platform linux-g++ \-make libs \-optimized-qmake \-pch \-qt-libjpeg \-qt-zlib \-no-opengl \-skip qt3d \-skip qtcanvas3d \-skip qtpurchasing \-skip webengine \-no-sse2 \-no-openssl \-no-cups \-no-glib \-no-iconv \-nomake examples \-nomake tools \-skip qtvirtualkeyboard \-no-feature-precompile_header \-v
??

??繼續(xù)執(zhí)行:
./1.sh
??

??配置成功。
步驟四:編譯Qt源碼
??根據(jù)多年經(jīng)驗(yàn),這是個(gè)至少長(zhǎng)達(dá)半小時(shí)的過程…
make -j8
??

??編譯出現(xiàn)錯(cuò)誤:
??

??通過強(qiáng)制Qt編譯對(duì)ARM處理器的“ neon”支持來解決此問題,只需在“ ./configure”之后的“ qtbase / mkspecs / qmodule.pri”中修改以下行:
vi qtbase /mkspecs /qmodule.pri
??

??(錯(cuò)誤路線:配置時(shí)去掉precomplile_header才能過去,一直覺得不妥,本次錯(cuò)誤又是缺少定義,博主一直懷疑這個(gè)問題,在研發(fā)過程中發(fā)現(xiàn)qmodule.pri去改cpu的時(shí)候發(fā)現(xiàn)有這個(gè)指令,所以干脆直接強(qiáng)制給他添加上了,但是后續(xù)論證了,還是報(bào)這個(gè)錯(cuò)誤,所等于個(gè)把小時(shí)證明無關(guān),繼續(xù)嘗試,但qmodule.pri還是修改了,因?yàn)轭A(yù)定是常規(guī)功能)
??到這里弄了幾個(gè)小時(shí)這個(gè)錯(cuò)誤也沒有比較大的進(jìn)展,源碼分析一些時(shí)間也無解,現(xiàn)在不死磕了,往回退步驟,嘗試其他配置路徑。
Qt從源碼編譯安裝
步驟一:下載解壓
??

tar xvf qt-everywhere-src-5.12.8.tar.xz
??

步驟二:配置Qt
??調(diào)整當(dāng)前目錄:
cd /home/yang/work/src/qt-everywhere-src-5.12.8
??然后配置:
./configure -prefix /home/yang/work/qt5.12.8 \-confirm-license \-release \-opensource \-v
??

??配置通過:
??

??(PS1:有時(shí)候是從一開始就走錯(cuò)大方向了,閾值2小時(shí),超過2小時(shí)往前面退一個(gè)步驟找解決方案)
??(PS2:太晚了,明天再繼續(xù))
步驟三:編譯Qt源碼
??配置基本全開了,配置比較可以,總體也編譯了半個(gè)多小時(shí)。
make -j8
??

??補(bǔ)充一次make(避免多線程的時(shí)候,一個(gè)編譯掛了但是太快沒停被其他線程沖掉了輸出)
步驟四:安裝make install
make install
??前面編譯的東西有點(diǎn)多,這里也花了十幾分鐘才install完成。
??

步驟五:檢查Qt使用qmake
??

??至此qmake就編譯就好了,但是沒有qtcreator,下一篇將編譯qtcreator,配置好本篇的編譯庫(kù)來測(cè)試開發(fā)環(huán)境。