0

我正在尝试在未安装 XServer 的情况下运行 QT 5.12 中的示例应用程序之一。我正在使用 Ubuntu Linux。当我使用linuxfb后端启动它时,它工作正常,但是 mapboxgl 插件不起作用(可能是因为缺少原生 opengl)

但是当我使用 EGLFS 后端启动它时

./qml_location_mapviewer -platform eglfs

它因“无法初始化 egl 显示”而失败

我尝试了 weston/wayland 合成器,-platform wayland一切正常。为什么 QT EGLFS 看不到我的 Intel Haswell Open GL 设备,但其他人可以?

4

2 回答 2

0

正如@derhass 建议的那样,需要先安装所有必要的OpenGL库重新编译QT。

# essentials
sudo apt-get install build-essential libssl-dev python

# bluez stack (optional)
sudo apt-get install libbluetooth-dev bluetooth blueman bluez libusb-dev libdbus-1-dev bluez-hcidump bluez-tools

# OpenGL EGL support
sudo apt-get install mesa-utils libegl1-mesa libegl1-mesa-dev libgbm-dev libgbm1 libgl1-mesa-dev libgl1-mesa-dri libgl1-mesa-glx libglu1-mesa libglu1-mesa-dev 

# assuming QT is downloaded and extracted before
cd ~/qt-everywhere-src-5.12.6
./configure -confirm-license -opensource -nomake tests -nomake examples -openssl-linked

确保您获得与此类似的 EGLFS 部分:

QPA backends:
  DirectFB ............................... no
  EGLFS .................................. yes
  EGLFS details:
    EGLFS OpenWFD ........................ no
    EGLFS i.Mx6 .......................... no
    EGLFS i.Mx6 Wayland .................. no
    EGLFS RCAR ........................... no
    EGLFS EGLDevice ...................... yes
    EGLFS GBM ............................ yes
    EGLFS VSP2 ........................... no
    EGLFS Mali ........................... no
    EGLFS Raspberry Pi ................... no
    EGLFS X11 ............................ yes
  LinuxFB ................................ yes
  VNC .................................... yes
  Mir client ............................. no

然后编译并安装整个东西

make
sudo make install

编译您的项目并运行它。

cd mapviewer
/usr/local/Qt-5.12.6/qmake
make
./qml_location_mapviewer -platform eglfs
于 2020-01-06T22:35:05.280 回答
0

请看这里:

https://doc.qt.io/qt-5/embedded-linux.html

特别是,在运行应用程序之前尝试设置以下环境变量:

export QT_QPA_EGLFS_INTEGRATION=eglfs_kms

如果这不起作用,请执行strace并检查失败的open调用以检查是否缺少任何库:

strace ./qml_location_mapviewer -platform eglfs 2>&1 | tee log.txt

特别重要的是以下库/插件/usr/lib

  • libQt5EglFSDeviceIntegration.so.5
  • libQt5EglFsKmsSupport.so.5
  • qt5/plugins/platforms/libqeglfs.so
  • qt5/plugins/egldeviceintegrations/libqeglfs-kms-integration.so
于 2020-09-17T12:32:04.773 回答