UOS ARM平台适配阶段总结
MBC是一款整合企业即时通讯、企业云盘、以及WEBAPP应用的软件。它要求软件能够跨平台,因此使用了QT技术进行开发。QT对开发者很友好,在x86架构下,提供了编译好的SDK,直接安装便可,简单省事。随着国产操作系统的发展,有了更多国产操作系统支持x86,arm,loongarch,mpis等架构,同时客户对公司也提出要支持相应架构的操作系统。但是QT的官网现在还没有除x86架构之外的SDK。因此开发者面临了一个紧要问题,就是如何在非x86架构下,编译QT的问题。
们的客户使用的是UOS操作系统(基于arm架构),它是近年才在市场上出现的,资料很少,关于QT的适配资料也很少。因此面临的困难可想而知。
刚接触时,在客户群,华为工程师,提出可以在x86架构上使用qemu虚拟机上,虚拟arm环境进而安装UOS操作系统。我查找了资料进行了尝试,在安装UOS时,非常缓慢,放那里黑屏,大概40多分钟才出现安装界面,选择安装选项,又过了2个多小时,才安装完全。我以为安装好了,就可以正常使用了,没想到点一下电脑桌面,10分钟才有响应。这种情况下,更别提要在这个基础上编译QT了,这个方法基本放弃了。
我之前做过一段时间的嵌入式开发,开发板是arm架构的情况下,我们使用的方式就是交叉编译。在网上查找资料,发现华为的openeuler就是使用交叉编译的方式开发应用程序,理论上来讲,这种方式UOS也是适用的。我在网上找到了linaro公司交叉编译工具。这家公司跟华为长期合作,使用的人也比较多,资料也非常多,相比较而言可靠性还是有的。因此我利用了这款工具进行艰难的尝试,MBC需要WEBengine模块和x11模块,因此依赖性比较复杂,依赖库也比较多,需要按照顺序一个一个的编译,费了九牛二虎之力,终于编译完成了。在x86环境下无法测试,因此找了一台云计算机在上面测试,发现glibc版本不匹配,运行不了,太心酸了。
之后获知UOS官网提供了一个云端的平台,可以直接在上面编译并且还可以在上面运行,事情就变得简单了。首先安装QT开发依赖库,编译QT源码。其种编译QT源码也遇到了问题,由于官网的计算机性能差,编译webengine时,老是电脑死机,后来修改了ninja源码,限制了线程数,就顺利的编译出来了。其次编译MBC,没有遇到问题。然后编译打包工具,也很顺利。基本上没有再遇到问题。
这就是UOS适配的历程,其中走了很多弯路,好在最终把问题解决了。