Linux内核模块( LKM ) B依赖于LKM A提供的符号。
因此,构建LKM B必须具备以下条件:
我使用BitBake配方构建LKMs A和B。我所做的是:
${STAGING_INCDIR}中。KBUILD_EXTRA_SYMBOLS变量提供到LKM的Makefile中。示例:
#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
}问题:
谢谢您的最佳实践提示。
发布于 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可以安全地用于新样式的暂存。
https://stackoverflow.com/questions/4739691
复制相似问题