2017-12-03 147 views
0

我一直在試圖QT5支持添加到使用Yocto的老闆問起的Pyro上樹莓派3QXcbIntegration:無法創建平臺的OpenGL上下文

在我bblayer.conf一個core-image-sato像我添加這些行:

BBLAYERS ?= " \ 
     /poky-pyro/meta \ 
     /poky-pyro/meta-poky \ 
     /poky-pyro/meta-yocto-bsp \ 
     /poky-pyro/meta-openembedded/meta-oe \ 
     /poky-pyro/meta-openembedded/meta-multimedia \ 
     /poky-pyro/meta-openembedded/meta-networking \ 
     /poky-pyro/meta-openembedded/meta-perl \ 
     /poky-pyro/meta-openembedded/meta-python \ 
     /poky-pyro/meta-raspberrypi \ 
     /poky-pyro/meta-qt5 \ 
    " 

在我的local.conf我添加這些行:

DISTRO_FEATURES_append = " opengl " 
IMAGE_INSTALL_append = " qtbase qtdeclarative qtquickcontrols2 qtmultimedia qttools cinematicexperience " 

BitBake的成功完成建設中的形象,但是當我在目標上運行Qt5_cenimaticExperience我得到個是錯誤消息:

QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled. 
+0

您可以檢查哪些功能在log.do_configure啓用(在它的最後)你的qtbase構建。很可能你會發現egl沒有啓用。在你的qtbase配方中,你可以找到你可以通過packageconfig變量激活的不同功能。最簡單的(快速和骯髒的)方式可能只是通過附加到packageconfig變量來創建qtbase.bbappend配方,然後添加所需的功能。應該看起來有點像:'PACKAGECONFIG + =「eglfs」'(注意字符串開頭的空格) – PeterErnsthaft

+0

您確定在X11窗口系統中使用'eglfs'是否正確? –

+1

我不完全相信它是「正確的」,正如我所提到的,這是一種可以嘗試的快速和骯髒的方式。如果它有效,你已經縮小了問題範圍,如果你有時間,你可以採取更復雜的方法。 – PeterErnsthaft

回答

0

這是Qtbase的默認配置,並根據您擁有的一切:

PACKAGECONFIG_GL ?= "${@bb.utils.contains('DISTRO_FEATURES', 'opengl', 'gl', '', d)}" 
PACKAGECONFIG_DEFAULT ?= "dbus udev evdev widgets tools libs freetype tests" 
PACKAGECONFIG_SYSTEM ?= "jpeg libpng zlib" 

正如你所看到的,我們只啓用-opengl desktop;我們需要的是嵌入式系統的opengl es2

要糾正這一點,這一行添加到您的local.conf

PACKAGECONFIG_append_pn-qtbase = " gles2 " 

順便說一句,這是我qtbase配置:

PACKAGECONFIG_append_pn-qtbase = " gles2 fontconfig \ 
       gstreamer \ 
       accessibility \ 
       tslib examples \ 
       " 
+0

謝謝@Charles尋求答案。我試過你的解決方案,但它不起作用,你知道爲什麼嗎? –