树外 galcore 构建导致 Qt 段错误
Out-of-tree galcore build causing Qt seg fault
我使用 Yocto (Krogoth) 来构建我的 imx6 图像和工具链,但是它在内核驱动程序上的工作有点沉重和缓慢。因此,我的开发周期是自行构建内核,仅使用 yocto 中 "do_patch" 运行 的输出作为源代码树基础并采购工具链环境。
这通常不是问题,因为我主要关注 s/w 堆栈的那一端。但是,我现在需要能够在我不断更新的内核之上 运行 Qt 应用程序(运行ning 在 eglfs 下),以便查找错误。为此,我需要 imx6 图形驱动程序正常工作,所以我从 git://github.com/Freescale/kernel-module-imx-gpu-viv.git 导出我的内核构建目录中获取 galcore 源代码,制作并部署它。该模块完美加载。然而 运行 已经使用 Yocto 构建的工作应用程序导致崩溃,在 libQt5EglDeviceIntegration.so.5 的某处。所有库等都是原始工作映像的一部分,我从中获取内核源代码的地方。
我需要做什么才能完成这项工作?是否有 Qt 的某些部分与图形驱动程序相关联,这将迫使我重建整个库? galcore.ko和Qt有什么关系?我的应用程序和 linux 内核之间现在是否存在奇怪的依赖关系?!
编辑:PEBCAK。我是个白痴。我没有检查 galcore 驱动程序的正确 SHA1(在配方中列出)。尽管如此,下面的答案还是很有启发性的,所以我想保留这个问题。
What do I need to do to make this work?
不知道。也许您的 self-built galcore.ko 与飞思卡尔的二进制 blob OpenGL 库不兼容?原来的 galcore.ko 是否正常工作?回溯看起来如何?
Is there some part of Qt tied to the graphics driver that's going to force me to rebuild the entire library?
无需重建 Qt。虽然 Qt 链接到 OpenGL 库,但 OpenGL ABI/API 是稳定的,因此不需要 Qt 重建。除此之外,您不会更改 OpenGL 库。
What's the relationship between galcore.ko and Qt?
Qt 在使用 QtQuick 时使用 OpenGL 进行渲染。 OpenGL 库(libGL.so
和一些变体,如 libGLes2.so
)由 Freescale 作为二进制 blob 提供。 OpenGL 库进行的系统调用最终出现在 galcore.ko
内核模块中。
libQt5EglDeviceIntegration.so.5
是 Qt 中执行第一个 OpenGL 调用以初始化 OpenGL 的部分。
Is there now a weird dependency between my application and the linux kernel?!
嗯,是的,间接通过 Qt -> libGL.so -> 内核 [galcore.ko]
我使用 Yocto (Krogoth) 来构建我的 imx6 图像和工具链,但是它在内核驱动程序上的工作有点沉重和缓慢。因此,我的开发周期是自行构建内核,仅使用 yocto 中 "do_patch" 运行 的输出作为源代码树基础并采购工具链环境。
这通常不是问题,因为我主要关注 s/w 堆栈的那一端。但是,我现在需要能够在我不断更新的内核之上 运行 Qt 应用程序(运行ning 在 eglfs 下),以便查找错误。为此,我需要 imx6 图形驱动程序正常工作,所以我从 git://github.com/Freescale/kernel-module-imx-gpu-viv.git 导出我的内核构建目录中获取 galcore 源代码,制作并部署它。该模块完美加载。然而 运行 已经使用 Yocto 构建的工作应用程序导致崩溃,在 libQt5EglDeviceIntegration.so.5 的某处。所有库等都是原始工作映像的一部分,我从中获取内核源代码的地方。
我需要做什么才能完成这项工作?是否有 Qt 的某些部分与图形驱动程序相关联,这将迫使我重建整个库? galcore.ko和Qt有什么关系?我的应用程序和 linux 内核之间现在是否存在奇怪的依赖关系?!
编辑:PEBCAK。我是个白痴。我没有检查 galcore 驱动程序的正确 SHA1(在配方中列出)。尽管如此,下面的答案还是很有启发性的,所以我想保留这个问题。
What do I need to do to make this work?
不知道。也许您的 self-built galcore.ko 与飞思卡尔的二进制 blob OpenGL 库不兼容?原来的 galcore.ko 是否正常工作?回溯看起来如何?
Is there some part of Qt tied to the graphics driver that's going to force me to rebuild the entire library?
无需重建 Qt。虽然 Qt 链接到 OpenGL 库,但 OpenGL ABI/API 是稳定的,因此不需要 Qt 重建。除此之外,您不会更改 OpenGL 库。
What's the relationship between galcore.ko and Qt?
Qt 在使用 QtQuick 时使用 OpenGL 进行渲染。 OpenGL 库(libGL.so
和一些变体,如 libGLes2.so
)由 Freescale 作为二进制 blob 提供。 OpenGL 库进行的系统调用最终出现在 galcore.ko
内核模块中。
libQt5EglDeviceIntegration.so.5
是 Qt 中执行第一个 OpenGL 调用以初始化 OpenGL 的部分。
Is there now a weird dependency between my application and the linux kernel?!
嗯,是的,间接通过 Qt -> libGL.so -> 内核 [galcore.ko]