首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Openembedded烘焙具有依赖关系的Linux内核模块

使用Openembedded烘焙具有依赖关系的Linux内核模块
EN

Stack Overflow用户
提问于 2011-01-19 19:27:01
回答 1查看 2.7K关注 0票数 0

Linux内核模块( LKM ) B依赖于LKM A提供的符号。

因此,构建LKM B必须具备以下条件:

  • 来自LKM A的头文件
  • 符号表(见有关详细信息的Kbuild文档)

我使用BitBake配方构建LKMs A和B。我所做的是:

  • 我将LKM的头文件和符号表传播到暂存包含目录${STAGING_INCDIR}中。
  • 我将暂存包含和符号表的路径作为KBUILD_EXTRA_SYMBOLS变量提供到LKM的Makefile中。

示例:

代码语言:javascript
复制
#BB-recipe  for LKM A 
# Staging of .h files and symbol-table 
do_install_append () {
  install -d ${STAGING_INCDIR} 
  install ${WORKDIR}/${PN}/src/*.h ${STAGING_INCDIR}/ 
  install ${WORKDIR}/${PN}/Module.symvers ${STAGING_INCDIR}/rtserial.symvers
} 

#BB-recipe for LKM B
do_compile () {
unset CFLAGS CPPFLAGS CXXFLAGS LDFLAGS CC LD CPP
cd "${WORKDIR}/mstp"
oe_runmake KDIR="${KERNEL_SOURCE}" \
         ARCH="${ARCH}" \
         CROSS_COMPILE="${CROSS_COMPILE}" \
         IDIR="${STAGING_INCDIR}" \
         KBUILD_EXTRA_SYMBOLS="${STAGING_INCDIR}/rtserial.symvers" \
         build
 }

问题:

  • do_install_append是实现共享资源的正确任务吗?我读到do_staging()是有点不受欢迎..。
  • 在哪里摆符号桌?

谢谢您的最佳实践提示。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-01-20 18:05:40

对于当前的OpenEmbedded和非“遗留”阶段,不再直接进行分阶段。所有东西都用do_install安装到标准位置(即相对于${D},而不是临时位置),并且系统基于此自动填充sysroot。因此,我建议将KVM A的头安装到${D}${includedir}/${PN},并将符号表安装到${D}${datadir}/${PN},然后KVM B仍然查看STAGING_INCDIR和STAGING_DATADIR以获取这些文件。您可能需要设置NATIVE_INSTALL_WORKS = "1“,让它知道修改后的do_install可以安全地用于新样式的暂存。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4739691

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档