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