我使用Yocto(Krogoth)来构建我的imx6图像和工具链,但是对于内核驱动程序来说,它有点沉重和缓慢。因此,我的开发周期是单独构建内核,只需使用yocto中运行的“do_patch”输出作为源树基础并获取工具链环境。
这通常不是问题,因为大部分时间我都专注于s / w堆栈的那一端。但是,我现在需要能够在我不断更新的内核之上运行Qt应用程序(在eglfs下运行),以便进行错误搜索。要做到这一点,我需要imx6图形驱动程序工作,所以我从git获得galcore源://github.com/Freescale/kernel-module-imx-gpu-viv.git导出我的内核构建目录,制作并部署它。该模块完美加载。但是,运行已经使用Yocto构建的工作应用程序会导致崩溃,这在libQt5EglDeviceIntegration.so.5中。所有的lib等都是原始工作图像的一部分,就像我从中获取内核源代码一样。
我需要做些什么来完成这项工作?是否有部分Qt绑定到图形驱动程序,这将迫使我重建整个库? galcore.ko和Qt之间的关系是什么?我的应用程序和Linux内核之间现在有一种奇怪的依赖关系吗?!
编辑:PEBCAK。我是个白痴。我没有从正确的SHA1(配方中列出的)中检查galcore驱动程序。不过,下面的答案是有益的,所以我想保留这个问题。答案 0 :(得分:2)
我需要做些什么来完成这项工作?
不知道。也许你的自制galcore.ko与飞思卡尔的二进制blob OpenGL库不兼容?原始galcore.ko是否正常工作?回溯如何看待?
是否有部分Qt绑定到图形驱动程序,这将迫使我重建整个库?
无需重建Qt。虽然Qt与OpenGL库相关联,但OpenGL ABI / API是稳定的,因此不需要进行Qt重建。除此之外,您不会更改OpenGL库。
galcore.ko和Qt之间的关系是什么?
Qt在使用QtQuick时使用OpenGL进行渲染。 OpenGL库(libGL.so
和一些变体,如libGLes2.so
)由飞思卡尔提供为二进制blob。 OpenGL库使得系统调用最终进入galcore.ko
内核模块。
libQt5EglDeviceIntegration.so.5
是Qt中第一个初始化OpenGL的OpenGL调用的部分。
我的应用程序和Linux内核之间现在有一种奇怪的依赖关系吗?!
嗯,是的,间接通过Qt - > libGL.so - >内核[galcore.ko]