我不指望有人能解决我的具体问题,但我希望有人能给我一个正确的答案。
我已经编译了一个qt5.2应用程序,并在我的ti am335x评估模块上工作。它使用-platform elgfs
标志运行。
我最近收到了新的硬件,这个硬件仍然使用相同版本的ti am335x处理器(3352),但它在一个完全不同的板上,有不同的显示器。内核是由外部第三方ti修改的,根文件系统和qt5.2应用程序与ti am335x上的完全相同。
当我要在这个新硬件上启动应用程序时,它会报告:
打开显示0x1
无法初始化egl显示
egl错误
中止
所以我的问题是:
什么原因导致qt无法初始化egl显示?
我的理解是“egl”代表“嵌入式系统图形库”,我认为这意味着在某些地方需要一些egl.lib,但是在内核/驱动程序级别需要什么来使显示与egl兼容呢?
最佳答案
查找插件是否存在:
ls$rootfs/usr/lib/qt5/plugins/platforms/libqeglfs.so文件
在其上运行ldd(从您的工具链,而不是系统ldd):
构建arm poky linux gnueabi/elf/ldd libqeglfs.so
libz.so.1 => not found
libudev.so.0 => not found
libQt5Gui.so.5 => not found
libQt5Core.so.5 => not found
libGLESv2.so.2 => not found
libEGL.so.1 => not found
libpthread.so.0 => /lib/arm-linux-gnueabihf/libpthread.so.0 (0xf66e6000)
libstdc++.so.6 => /usr/lib/arm-linux-gnueabihf/libstdc++.so.6 (0xf662f000)
libm.so.6 => /lib/arm-linux-gnueabihf/libm.so.6 (0xf65bb000)
libgcc_s.so.1 => /lib/arm-linux-gnueabihf/libgcc_s.so.1 (0xf6592000)
libc.so.6 => /lib/arm-linux-gnueabihf/libc.so.6 (0xf64a3000)
/lib/ld-linux-armhf.so.3 (0xf6fd7000)
确保所有的LIBS都存在(再次在ROTFS而不是主机系统上)。
如果没有,请在rootfs上安装正确的库。
关于linux - 为什么Qt无法在我的新硬件上初始化显示,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23548389/