Yocto项目中如何配置recipes-graphics生成DRM开发包?
解决Yocto项目中DRM内核头文件缺失及驱动编译问题
1. 检查并开启内核DRM相关配置
驱动编译缺失的drm_ioctl.h和drm_gem_cma_helper.h属于内核DRM子系统头文件,需确保内核配置中开启对应功能:
- 在内核配方(如
linux-imx_6.1.55.bb)的配置片段或defconfig中添加以下选项:CONFIG_DRM=y CONFIG_DRM_GEM_CMA_HELPER=y CONFIG_DRM_KMS_HELPER=y # 针对IMX平台需额外添加 CONFIG_DRM_IMX=y - 若使用
KERNEL_FEATURES管理配置,可创建内核配置片段文件(如files/drm.cfg)并在配方中引用:KERNEL_FEATURES += "cfg/drm.cfg"
2. 确保内核开发包包含DRM头文件
Yocto默认不会将全部内核头文件打包到开发包,需修改内核配方的FILES_${PN}-dev字段,添加DRM头文件路径:
FILES_${PN}-dev += " \ ${includedir}/drm/* \ "
该配置会将drm/目录下的所有头文件(包括drm_ioctl.h和drm_gem_cma_helper.h)纳入内核开发包。
3. 调整libdrm配方配置
当前使用的libdrm_2.4.115.imx.bb需确保依赖正确的内核头文件并开启平台支持:
- 添加内核头文件依赖:
DEPENDS += "linux-libc-headers" - 开启IMX平台及KMS支持:
EXTRA_OECONF += " \ --enable-imx \ --enable-kms \ "
4. 重新构建组件
执行以下命令清理并重新构建相关包:
# 清理旧构建产物 bitbake -c clean linux-imx libdrm # 构建内核开发包和libdrm bitbake linux-imx-dev libdrm
之后编译驱动时,确保头文件路径指向Yocto生成的sysroot目录(通常位于tmp/sysroots/<target-arch>/usr/include/)。
内容的提问来源于stack exchange,提问作者dxyzhou-tiger
相关产品推荐
相关产品推荐

