最近项目开发需要用到qml,因为qml需要依赖OpenGL库,所以重新配置相关环境。
一、开发环境
1.内核版本
[email protected]:~# uname -a
Linux marsboard 4.1.15 #1 SMP PREEMPT Mon Dec 19 13:55:17 CST 2016 armv7l GNU/Linux
2.文件系统
采用yocto编译出来的对应的内核4.1.15版本的文件系统
3.Qt版本
采用qt5.9.4版本,下载源码手动编译的qt库(编译时配置了OpenGL的路径,具体后面再详述)
4.硬件
开发板采用的是天嵌imx6Q系列,uboot和内核也是移植的官方提供的4.1.15版本(可以从天嵌官网提供的百度网盘下载)。
注意据官方资料imx6 Sololite不支持OpenGL,
二、Qt库移植及Qt程序运行
1.库移植
虚拟机上编译出来的库文件如下:
将qt库移植到开发板,lib拷贝到了/usr/lib,plugins、qml拷贝到了/usr/lib/qt5
2.Qt程序的编译
如果自己编译Qt库,那就需要手动修改路径cd /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/会有一个default.conf配置文件,可以修改默认配置文件为你编译好的Qt库路径,具体不再详述。
3.运行环境变量配置
[email protected]:~# export EGLFS_DEVICE_INTEGRATION= eglfs_viv
[email protected]:~# export QT_QPA_PLATFORM=eglfs
[email protected]:~# ls
bright
[email protected]:~# ./bright
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QEglFSVivIntegration will set environment variable FB_MULTI_BUFFER=2 to enable double buffering and vsync.
If this is not desired, you can override this via: export QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=1
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
Facade::initializeCommand()
ApplicationFacade::initializeCommand()
Facade::initializeCommand()
QMetaObject::connectSlotsByName: No matching signal for on_toolButton_clicked()
write begin at "01:47:36.388" >>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<< write finished at "01:47:36.388"
qrc:/qml/PowerSetting.qml:2:1: module "QtQuick.Controls" is not installed
qrc:/qml/PowerSetting.qml:5:1: module "QtQuick.Extras" is not installed
qrc:/qml/PowerSetting.qml:1:1: module "QtQuick" is not installed
qrc:/qml/PowerSetting.qml:6:1: module "QtQuick.Controls.Styles" is not installed
qrc:/qml/PowerSetting.qml:3:1: module "QtQuick.Layouts" is not installed
qrc:/qml/PowerSetting.qml:4:1: module "QtQuick.Dialogs" is not installed
qrc:/qml/PowerSetting.qml:2:1: module "QtQuick.Controls" is not installed
qrc:/qml/PowerSetting.qml:5:1: module "QtQuick.Extras" is not installed
qrc:/qml/PowerSetting.qml:1:1: module "QtQuick" is not installed
qrc:/qml/PowerSetting.qml:6:1: module "QtQuick.Controls.Styles" is not installed
qrc:/qml/PowerSetting.qml:3:1: module "QtQuick.Layouts" is not installed
qrc:/qml/PowerSetting.qml:4:1: module "QtQuick.Dialogs" is not installed
qrc:/qml/PowerSetting.qml:2:1: module "QtQuick.Controls" is not installed
qrc:/qml/PowerSetting.qml:5:1: module "QtQuick.Extras" is not installed
qrc:/qml/PowerSetting.qml:1:1: module "QtQuick" is not installed
qrc:/qml/PowerSetting.qml:6:1: module "QtQuick.Controls.Styles" is not installed
qrc:/qml/PowerSetting.qml:3:1: module "QtQuick.Layouts" is not installed
qrc:/qml/PowerSetting.qml:4:1: module "QtQuick.Dialogs" is not installed
qrc:/qml/PowerSetting.qml:2:1: module "QtQuick.Controls" is not installed
qrc:/qml/PowerSetting.qml:5:1: module "QtQuick.Extras" is not installed
qrc:/qml/PowerSetting.qml:1:1: module "QtQuick" is not installed
qrc:/qml/PowerSetting.qml:6:1: module "QtQuick.Controls.Styles" is not installed
qrc:/qml/PowerSetting.qml:3:1: module "QtQuick.Layouts" is not installed
qrc:/qml/PowerSetting.qml:4:1: module "QtQuick.Dialogs" is not installed
qrc:/qml/PowerSetting.qml:2:1: module "QtQuick.Controls" is not installed
qrc:/qml/PowerSetting.qml:5:1: module "QtQuick.Extras" is not installed
qrc:/qml/PowerSetting.qml:1:1: module "QtQuick" is not installed
qrc:/qml/PowerSetting.qml:6:1: module "QtQuick.Controls.Styles" is not installed
qrc:/qml/PowerSetting.qml:3:1: module "QtQuick.Layouts" is not installed
qrc:/qml/PowerSetting.qml:4:1: module "QtQuick.Dialogs" is not installed
qrc:/qml/PowerSetting.qml:2:1: module "QtQuick.Controls" is not installed
qrc:/qml/PowerSetting.qml:5:1: module "QtQuick.Extras" is not installed
qrc:/qml/PowerSetting.qml:1:1: module "QtQuick" is not installed
qrc:/qml/PowerSetting.qml:6:1: module "QtQuick.Controls.Styles" is not installed
qrc:/qml/PowerSetting.qml:3:1: module "QtQuick.Layouts" is not installed
qrc:/qml/PowerSetting.qml:4:1: module "QtQuick.Dialogs" is not installed
QObject::connect: Cannot connect (null)::sendPowerValueToWidget(QString) to CentralPanel::on_setPowerData(QString)
QObject::connect: Cannot connect CentralPanel::sigSendPowerInitData(QString) to (null)::recFromWidget(QString)
QObject::connect: Cannot connect (null)::closeView() to QQuickWidget::close()
[email protected]:~# ^C
[email protected]:~# export QML2_IMPORT_PATH=/usr/lib/qt5/qml
[email protected]:~# ./bright
QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'
QEglFSVivIntegration will set environment variable FB_MULTI_BUFFER=2 to enable double buffering and vsync.
If this is not desired, you can override this via: export QT_EGLFS_IMX6_NO_FB_MULTI_BUFFER=1
Unable to query physical screen size, defaulting to 100 dpi.
To override, set QT_QPA_EGLFS_PHYSICAL_WIDTH and QT_QPA_EGLFS_PHYSICAL_HEIGHT (in millimeters).
Facade::initializeCommand()
ApplicationFacade::initializeCommand()
Facade::initializeCommand()
QMetaObject::connectSlotsByName: No matching signal for on_toolButton_clicked()
write begin at "01:53:06.210" >>>>>>>>>>>>>>>>>>>>
<<<<<<<<<<<<<<<<<< write finished at "01:53:06.211"
如上所述,环境变量配置完毕就可以看到界面了,qml页面正常加载。
总结:
1.QStandardPaths: XDG_RUNTIME_DIR not set, defaulting to '/tmp/runtime-root'这个好像不影响页面显示
2.天嵌官方提供的4.1.15内核支持OpenGL,这点很重要