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