如何在Yocto Linux中为Qt5应用程序启用GLX和EGL与XCB的集成?

如何在Yocto Linux中为Qt5应用程序启用GLX和EGL与XCB的集成?,qt,opengl,bitbake,egl,xcb,Qt,Opengl,Bitbake,Egl,Xcb,我有一个应用程序运行在YoctoZeus3.0.1和Qt5上,并且依赖OpenGL EGL。应用程序构建正常,但失败,并显示以下消息: QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled QXcbIntegration: Cannot create platform offscreen surface, neither GLX nor EGL are enabled 我已

我有一个应用程序运行在YoctoZeus3.0.1和Qt5上,并且依赖OpenGL EGL。应用程序构建正常,但失败,并显示以下消息:

QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled
QXcbIntegration: Cannot create platform offscreen surface, neither GLX nor EGL are enabled
我已经在image
.bb
文件中添加了所有需要的OpenGL驱动程序:

IMAGE_INSTALL += "libegl-mesa libgl-mesa libegl-mesa-dev libgl-mesa-dev libgles3-mesa-dev mesa-megadriver"
以下是我的
qt5/qtbase\%.bbappend
文件

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

PACKAGECONFIG_append = "gles2 mtdev sql-sqlite glib fontconfig gif accessibility"

PACKAGECONFIG_append = " widgets"

do_configure_prepend () {
    cat >> ${S}/mkspecs/linux-oe-g++/qmake.conf <<EOF
    # the below indentation is important - Soham

QMAKE_LIBS_EGL += -lEGL -ldl -lglib-2.0 -lpthread
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lgsl -lEGL -ldl -lglib-2.0 -lpthread

QMAKE_CFLAGS += -DLINUX=1 -DWL_EGL_PLATFORM -DEGL_API_FB=1
QMAKE_CXXFLAGS += -DLINUX=1 -DWL_EGL_PLATFORM -DEGL_API_FB=1

QT_QPA_DEFAULT_PLATFORM = xcb
load(qt_config)
EOF
}

fileextrapaths\u prepend:=“${THISDIR}/${PN}:”
PACKAGECONFIG_append=“gles2 mtdev sql sqlite glib fontconfig gif可访问性”
PACKAGECONFIG_append=“小部件”
是否配置预结束(){

cat>${S}/mkspecs/linux-oe-g++/qmake.conf我需要更改我的
qtbase@bbappend
。它应该如下所示:

FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"

IMAGE_FEATURES += "accessibility"
IMAGE_FEATURES += "gles2 mtdev sql-sqlite glib fontconfig gif accessibility xcb egl libs xkb xkmcommon"
QT_CONFIG_FLAGS_APPEND = "-xcb"

PACKAGECONFIG_append = " widgets"

DEPENDS += "gsl libxkbcommon"

RDEPENDS_${PN} += "gsl xrandr libxkbcommon"

do_configure_prepend () {
    # the below indentation is important - Soham
    cat > ${S}/mkspecs/oe-device-extra.pri <<EOF

QMAKE_LIBS_EGL += -lEGL -ldl -lglib-2.0 -lpthread -lX11 -lxcb -lXrandr -lxcb-glx
QMAKE_LIBS_OPENGL_ES2 += -lGLESv2 -lgsl -lEGL -ldl -lglib-2.0 -lpthread -lX11 -lxcb -lXrandr -lxcb-glx

QMAKE_CFLAGS += -DLINUX=1 -DWL_EGL_PLATFORM -DEGL_API_FB=1 -DXCB_USE_EGL -DXCB_USE_GLX
QMAKE_CXXFLAGS += -DLINUX=1 -DWL_EGL_PLATFORM -DEGL_API_FB=1 -DXCB_USE_EGL -DXCB_USE_GLX

QT_QPA_DEFAULT_PLATFORM = xcb
QT_XCB_GL_INTEGRATION = xcb_egl

EOF
}
fileextrapaths\u prepend:=“${THISDIR}/${PN}:”
图像功能+=“可访问性”
IMAGE_FEATURES+=“gles2 mtdev sql sqlite glib fontconfig gif辅助功能xcb egl libs xkb xkmcommon”
QT_CONFIG_FLAGS_APPEND=“-xcb”
PACKAGECONFIG_append=“小部件”
依赖+=“gsl libxkbcommon”
RDEPENDS_${PN}+=“gsl xrandr libxkbcommon”
是否配置预结束(){
#下面的缩进很重要-Soham

cat>${S}/mkspecs/oe-device-extra.pri我不知道如何启用Qt的调试输出?在
QXCBConnection
的构造函数中有一些类似的代码:
qCDebug(lcQpaGl)我启用了QT_DEBUG_PLUGINS=1。然后我没有得到你所说的任何这样的输出。但是我得到了一些输出:
loaded library/usr/lib/PLUGINS/platforms/libqcb。因此
QT..qpa.xcb:xcb_)shm_create_segment()对于大小3023616失败。