最近因?yàn)橐恍┦虑樾枰阢y河麒麟ARM系統(tǒng)上[銀河麒麟V10 SP1 ARM 2203 linux5.4.96-11]安裝QT5.12.4版本,由于QT官方不提供ARM版的安裝包,無奈只能自己手動編譯源代碼。
后續(xù)補(bǔ)充:實(shí)際上我要裝的是Qt5.14.2 而不是 5.12.4,不過同樣的環(huán)境下Qt5.14.2也編譯成功了。
這是一篇個人筆記,對這段時間的工作進(jìn)行總結(jié),如果能幫到各位那再好不過。鄙人才疏學(xué)淺,大佬輕噴。
建議和官方文檔一起閱讀。
Qt-5構(gòu)建文檔
QtWebEngine/How_to_Try
QtWebEngine Platform Notes
構(gòu)建
代碼路徑千萬不要有中文
建議閱讀完 依賴安裝以及報錯
再開始構(gòu)建
執(zhí)行命令之前先安裝這個,在文檔中有說明
官方構(gòu)建文檔
sudo apt-get install build-essential libgl1-mesa-dev
確認(rèn)是否構(gòu)建QTWebEngine
如果跳過的話,執(zhí)行這段命令。后面執(zhí)行make大概在1小時左右(麒麟海思芯片9006c)。
# 路徑換成你自己的
./configure -skip webengine --prefix=/home/johnson/Qt5.12.4/
如果選擇構(gòu)建web引擎。時間會很漫長。原因是因?yàn)閏hromium編譯很吃內(nèi)存,swap分區(qū)的速度比內(nèi)存還是慢很多的。
# -webengine-proprietary-codecs: 啟用對專有編解碼器的支持,支持chromium,可以播放視頻
./configure \
--prefix /home/johnson/Qt5.12.4 \
-opensource \
-confirm-license \
-nomake examples \
-nomake tests \
-release \
-webengine-proprietary-codecs \
--pcre=qt
開始構(gòu)建
nproc是獲取CPU的線程數(shù),可以多線程構(gòu)建;如果你還要用電腦干其他活,可以少給幾個線程,比如make -j4。
sudo make -j$(nproc)
sudo make install
依賴安裝以及報錯
特殊情況
有幾個需要說明的,不知道是我這個機(jī)子的問題還是什么。
-
推薦使用 apt-get 而不是 apt,貌似有的依賴包用 apt install 找不到
-
我這個系統(tǒng)的 /etc/apt 目錄下的sources.list總是莫名其妙自己變成下面這段(有可能是系統(tǒng)沒激活的原因),導(dǎo)致apt-get update更新不了,而且找不到依賴。如果你的機(jī)子也有這種問題,在后面 apt-get 找不到依賴的時候可以看看sources.list是不是變了。
# 本文件由源管理器管理,會定期檢測與修復(fù),請勿修改本文件
deb https://archive.kylinos.cn/kylin/KYLIN-ALL 10.1-wayland-2203-fix-disk main
實(shí)際上在系統(tǒng)重裝開機(jī)過后是這個,備份一下sources.list,然后 chmod 444 sources.list 設(shè)置為只讀。當(dāng)然了,我的系統(tǒng)架構(gòu)和版本和你們都不一定一樣,sources.list也有所區(qū)別。
deb https://archive.kylinos.cn/kylin/KYLIN-ALL/ 10.1-wayland-2203-updates main universe restricted multiverse
deb https://archive.kylinos.cn/kylin/KYLIN-ALL/ 10.1-kirin9006C-feature main
deb https://archive2.kylinos.cn/deb/kylin/production/PART-10_1-kirin9a0/custom/partner/10_1-kirin9a0 default all
依賴安裝
我從官方文檔以及查閱各種資源總結(jié)的依賴
官方要求
總結(jié)合并
- 其中
libsrtp0-dev
這個依賴在我平臺上升級為了libsrtp2-dev
sudo apt-get install bison build-essential gperf flex python2 libasound2-dev \
libcups2-dev libdrm-dev libegl1-mesa-dev libnss3-dev libpci-dev libpulse-dev \
libudev-dev nodejs libxtst-dev gyp ninja-build libssl-dev libxcursor-dev \
libxcomposite-dev libxdamage-dev libxrandr-dev libfontconfig1-dev libxss-dev \
'libsrtp0-dev' libwebp-dev libjsoncpp-dev libopus-dev libminizip-dev libavutil-dev \
libavformat-dev libavcodec-dev libevent-dev libvpx-dev libsnappy-dev libre2-dev \
libprotobuf-dev protobuf-compiler gcc g++ libssl-dev libxcursor-dev libxcomposite-dev \
libxrandr-dev libdbus-1-dev ffmpeg libavutil-dev libavformat-dev libavcodec-dev libevent-dev \
libxcb-xfixes0-dev xcb libxcb-xkb-dev x11-xkb-utils libx11-xcb-dev libxkbcommon-x11-dev \
libfontconfig1-dev xorg-dev libclipper-dev
- 如果要構(gòu)建Qt docs的話
sudo apt-get install libclang-dev llvm
- 如果要使用相機(jī)需要安裝gstreamer
sudo apt-get install libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good \
gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc 1.0-tools
- 有些模塊需要依賴官網(wǎng)都找不到,比如相機(jī)那部分坑了我好久,后來才發(fā)現(xiàn)是少了依賴所以產(chǎn)物沒有構(gòu)建出來,具體缺少了什么模塊的依賴還得自己去找了
報錯
- 在執(zhí)行make install期間鏈接庫報錯。
/usr/bin/ld.gold: error: cannot find -lclip2tri
/usr/bin/ld.gold: error: cannot find -lpoly2tri
/usr/bin/ld.gold: error: cannot find -lclipper
.obj/qgeopath.o:qgeopath.cpp:function QGeoPathPrivate::polygonContains(QGeoCoordinate const&) const: error: undefined reference to ‘c2t::clip2tri::pointInPolygon(QtClipperLib::IntPoint const&, std::vector<QtClipperLib::IntPoint, std::allocatorQtClipperLib::IntPoint > const&)’
collect2: error: ld returned 1 exit status
make[3]: *** [Makefile:220: …/…/lib/libQt5Positioning.so.5.12.4] Error 1
安裝這個解決了
sudo apt-get install libclipper-dev
- 編譯進(jìn)行兩三個小時后,如果你的電腦內(nèi)存小于8G有可能會終止編譯,并出現(xiàn)下面這兩段。
g++: fatal error: 已殺死 signal terminated program cc1plus
ninja: build stopped: subcommand failed.- 造成這個錯誤的原因是因?yàn)橄到y(tǒng)資源不足,可以重新執(zhí)行make嘗試一下。
- 還可以擴(kuò)大系統(tǒng)的swap分區(qū)
`先查看一下swap的大小` free -h `我這邊是2G,但是我的交換分區(qū)是8G,執(zhí)行下面這段查看,猜測是swap_file(系統(tǒng)自帶)沒有計算在其中` sudo swapon --show `輸出大概如下` > /dev/zram0 partition 2G > /swap_file file 8G `/swapfile_1路徑是可以更換的,銀河麒麟系統(tǒng)通常有數(shù)據(jù)盤,數(shù)據(jù)盤很大,我一般選擇這樣/data/swap/swapfile_1` fallocate -l 8G /swapfile_1 chmod 600 /swapfile_1 mkswap /swapfile_1 swapon /swapfile_1 `然后編輯文件` vim /etc/fstab `在最后一行寫入` /swapfile_1 swap swap defaults 0 0 `執(zhí)行完成之后,資源管理器中可能還是沒變化,查詢一下` sudo swapon --show `如果存在/swapfile_1應(yīng)該就是可以了,查詢swap看看容量是否變化了` free -h `容量變成了9G,應(yīng)該是剛才新增的8G起作用了`
- 或者make時少分配幾個線程
環(huán)境變量
vim ~/.bashrc
在最后一行添加
# 路徑換成你自己的
export PATH=/home/johnson/Qt5.12.4/bin:$PATH
然后執(zhí)行文章來源:http://www.zghlxwxcb.cn/news/detail-752254.html
source ~/.bashrc
結(jié)束
經(jīng)過六七個小時的編譯,終于成功了。
我的QtWebEngine在--multi-process
模式下偶爾會莫名的崩潰(崩潰status是QWebEnginePage::CrashedTerminationStatus (2),code是139;簡單的html網(wǎng)頁不會崩),需要reload web引擎才行;換成--single-process
就好了,不知道怎么回事,有沒有大佬知道情況的[拜托了??????]文章來源地址http://www.zghlxwxcb.cn/news/detail-752254.html
到了這里,關(guān)于銀河麒麟V10 SP1 ARM編譯QT源代碼的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!