KyLinv10 qt5.12.0-everywhere-opensource-src源码编译

    之前使用qt quick qml写了一个客户端,一份客户端代码做好了X86下XP 、win7、win8、win10、centos7、KyLin、Uos系统的适配,后来放到了另外一台搭载了国产cpu JM7200的机器上运行, 结果报错,提示说系统不支持这种执行文件的格式, 之前代码确实没有做aarch64平台下的适配,之前所有的适配工作所处的电脑都是用的x86架构的cpu, 之前的客户端都是x86平台下编译的,这个问题就很明显了,需要获得aarch64平台下的qt、qtCreator!qt官方提供可x86平台下的各种qt版本的安装包和源码, 但是还是提供了"qt-everywhere-opensource-qt版本"的源码,只能通过编译qt-everywhere-opensource*的源码获取aarch64平台下的qt、qtCreator。奈何本人并没有aarch64平台的主机,第一想法是在Linux虚拟机上交叉编译qt-everywhere-opensource*源码, 折腾了很久还是编译失败, ./configure的时候各种报错,编译成功后还是缺依少库的! 这里还有一个坑,最好保持在各个平台下开发时qt的版本一致, 不然后面很难做适配工作,为啥呢?因为你用的qt qml使用的某种UI类型, 可能其他qt版本中没有这种类型~~ ,   我在虚拟机centos7上交叉编译qt5.12.0希望得到aarch64 平台下的qt,编译了成功后有些qt quick模块居然编译不出来,无奈只能找来一台搭载了aarch64架构的cpu的KyLin v10 , 因为Kylin v10自带了qtcreator, 所以省去了自编译qtcreator.

     在aarch64 Kylin v10下编译了qt-everywhere-opensource-5.12.0 ,./configure -release -qt-xcb -confirm-license -opensource -prefix /opt/qt-5.12.0arm  -skip qtimageformats -nomake tests -nomake examples , 编译成功后,在qtcreator增加刚才编译好的qt version(我这里是/opt/qt-5.12.0arm/bin/qmake), 编译器我使用的是系统自带的gcc/g++(我这里是/usr/bin/g++  /usr/bin/gcc),编译器也是使用系统自带的(这就是不继续在x86 centos7上交叉编译的原因, 这省下太多的事情了, 不然你还得在centos7下载aarch64下的gcc/g++编译器、qt debug) , 编译成功后再pro中做好对aarch64的适配,例如:

contains(QMAKE_HOST.arch,X86_X64){
    win32:{
        QML_IMPORT_PATH = C:\Qt\Qt5.14.2\5.14.2\msvc2015_64\qml
    }
 
    unix:{
        QML_IMPORT_PATH = /home/xiaolong/Qt5.12.1/5.12.1/gcc_64/qml
    }
}else {
    unix:{
        QML_IMPORT_PATH = /opt/qt-5.6.1arm/qml
    }
}

编译完成后运行客户端发现窗口是空白的, 查看日志发现qt客户端qml中指定的font无法加载,我的字体用的是微软雅黑, 在x86下window、centos、unbuntu好像没有出现这个问题, 可能这些系统下都自带了微软雅黑的字体吧, 这个只能是下载微软雅黑的ttf字体文件, 然后再客户端中加载并使用此字体,例如:

 /字体
    int fontId = QFontDatabase::addApplicationFont(":/font/msyh.ttf");
    QStringList fontFamilies = QFontDatabase::applicationFontFamilies(fontId);
    qDebug()<<"fontfamilies:"<<fontFamilies;
    QFont font;
    font.setFamily("Microsoft YaHei UI");//设置全局字体
    app.setFont(font);
    ///

字体的问题解决后,运行程序客户端能够正常显示了,可能你的程序接着会出现各种问题, 但是解决的宗旨就是, 缺什么就找到aarch64对应平台下的东西然后在qt中使用。

    最后客户端能后正常编译和运行了,到了打包环节了,这还得拿到支持aarch64的linuxdeployqt, 没办法只能下载linuxdeployqt的源码自己编译,  我使用的是之前配置好的qtcreator编译linuxdeployqt, qmake发现报错提示没有webengine模块, 才发现linuxdeployqt工程下, 引用了

QtWebEngineApplication,因为是个测试工程文件, 我把它注释掉, 再编译就能得到linuxdeployqt了。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值