AM企業(yè)即時通對國產(chǎn)平臺(UOS ARM架構(gòu))的適配總結(jié)
?
MBC是一款整合企業(yè)即時通訊AM、企業(yè)云盤Mobox、以及WEBAPP應(yīng)用的3合一軟件。它要求軟件能夠跨平臺,因此使用了QT技術(shù)進(jìn)行開發(fā)。QT對開發(fā)者很友好,在x86架構(gòu)下,提供了編譯好的sdk,直接安裝便可,簡單省事。隨著國產(chǎn)操作系統(tǒng)的發(fā)展,有了更多國產(chǎn)操作系統(tǒng)支持x86,arm,loongarch,mpis等架構(gòu),同時客戶對公司也提出要支持相應(yīng)架構(gòu)的操作系統(tǒng)。但是QT的官網(wǎng)現(xiàn)在還沒有除x86架構(gòu)之外的sdk。因此開發(fā)者面臨了一個緊要問題,就是如何在非x86架構(gòu)下,編譯QT的問題。
我們的客戶使用的是UOS操作系統(tǒng)(基于arm架構(gòu)),它是近年才在市場上出現(xiàn)的,資料很少,關(guān)于QT的適配資料也很少。因此面臨的困難可想而知。
剛接觸時,在客戶群,華為工程師,提出可以在x86架構(gòu)上使用qemu虛擬機(jī)上,虛擬arm環(huán)境進(jìn)而安裝UOS操作系統(tǒng)。我查找了資料進(jìn)行了嘗試,在安裝UOS時,非常緩慢,放那里黑屏,大概40多分鐘才出現(xiàn)安裝界面,選擇安裝選項(xiàng),又過了2個多小時,才安裝完全。我以為安裝好了,就可以正常使用了,沒想到點(diǎn)一下電腦桌面,10分鐘才有響應(yīng)。這種情況下,更別提要在這個基礎(chǔ)上編譯QT了,這個方法基本放棄了。
我們之前做過一段時間的嵌入式開發(fā),開發(fā)板是arm架構(gòu)的情況下,我們使用的方式就是交叉編譯。在網(wǎng)上查找資料,發(fā)現(xiàn)華為的openeuler就是使用交叉編譯的方式開發(fā)應(yīng)用程序,理論上來講,這種方式UOS也是適用的。我在網(wǎng)上找到了linaro公司交叉編譯工具。這家公司跟華為長期合作,使用的人也比較多,資料也非常多,相比較而言可靠性還是有的。因此我利用了這款工具進(jìn)行艱難的嘗試,MBC需要webengine模塊和x11模塊,因此依賴性比較復(fù)雜,依賴庫也比較多,需要按照順序一個一個的編譯,費(fèi)了九牛二虎之力,終于編譯完成了。在x86環(huán)境下無法測試,因此找了一臺云計算機(jī)在上面測試,發(fā)現(xiàn)glibc版本不匹配,運(yùn)行不了,太心酸了。
之后獲知UOS官網(wǎng)提供了一個云端的平臺,可以直接在上面編譯并且還可以在上面運(yùn)行,事情就變得簡單了。首先安裝QT開發(fā)依賴庫,編譯QT源碼。其種編譯QT源碼也遇到了問題,由于官網(wǎng)的計算機(jī)性能差,編譯webengine時,老是電腦死機(jī),后來修改了ninja源碼,限制了線程數(shù),就順利的編譯出來了。其次編譯MBC,沒有遇到問題。然后編譯打包工具,也很順利。基本上沒有再遇到問題。
這就是UOS適配的歷程,其中走了很多彎路,好在最終把問題解決了。
?
?
?