我正在尝试构建一个自定义的yocto配方,它涉及编译一个小的C程序。在构建期间 -
$ bitbake -f interface-configuration
...
ERROR: QA Issue: non debug package contains .debug directory: interface-configuration path /work/cortexa9hf-vfp-poky-linux-gnueabi/interface-configuration/0.1-r0/packages-split/interface-configuration/etc/interfaces/bin/.debug/set
ERROR: QA run found fatal errors. Please consider fixing them.
ERROR: Function failed: do_package_qa
ERROR: Logfile of failure stored in: /home/git/poky/build-atmel/tmp/work/cortexa9hf-vfp-poky-linux-gnueabi/interface-configuration/0.1-r0/temp/log.do_package.28986
ERROR: Task 10 (/home/git/poky/meta-atmel/recipes-intelli/interface-configuration/interface-configuration_0.1.bb, do_package) failed with exit code '1'
我想知道这里是否有人知道如何禁用调试信息或删除QA检查。到目前为止,谷歌搜索错误已证明无效。
干杯
使用interface-configuration.bb更新
DESCRIPTION = "Interface configuration files and tools"
SECTION = "examples"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3f40d7994397109285ec7b81fdeb3b58"
SRC_URI = "file://interface-configuration-0.1.tar.gz"
do_compile() {
install -vd ${D}/
${CC} -g0 set.c -o set
# CC is arm-poky-linux-gnueabi-gcc -march=armv7-a -marm -mthumb-interwork -mfloat-abi=hard -mtune=cortex-a9 --sysroot=/home/git/poky/build-atmel/tmp/sysroots/sama5d3xek
}
do_install() {
cp -r ${S}/etc ${D}/etc
install -vd ${D}/etc/interfaces/bin
install -vm 0755 set ${D}/etc/interfaces/bin/
}
do_install_append() {
# I added this to try to remove the error - it doesn't work
rm -rf ${D}/etc/interfaces/bin/.debug
}
FILES_${PN} += "/etc/interfaces/MANIFEST \
/etc/interfaces/conf/A \
/etc/interfaces/conf/B \
/etc/interfaces/conf/C \
/etc/interfaces/conf/D \
/etc/interfaces/template/A \
/etc/interfaces/template/B \
/etc/interfaces/template/C \
/etc/interfaces/template/D \
/set.c"
答案 0 :(得分:12)
Yocto / OE在放置二进制文件的目录下生成.debug
- 目录。您对二进制文件使用非默认目录(install -vm 0755 set ${D}/etc/interfaces/bin
)。您需要声明.debug转到-dbg
包。
您现在有两种选择。首先使用像${D}/usr/bin
之类的标准目录,或者第二次使用.debug添加到dbg - 这样的包:
FILES_${PN}-dbg += "/etc/interfaces/bin/.debug"
您可以删除do_install_append
,因为在.debug
之后创建了do_install
。
如果您使用第二个选项,则必须在gdb中使用set debug-file-directory directories
选项配置gdb以调试二进制文件。阅读更多here
答案 1 :(得分:9)
.debug目录自动生成为meta/classes/package.bbclass
中split_and_strip_files
函数的一部分。
此函数获取do_install
生成的文件,并将它们拆分为多个包:${PN}
包含基本文件和剥离的二进制文件,${PN}-dbg
包含调试符号等。
您可以通过在split_and_strip_files
文件中添加以下内容来取消.bb
:
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"
我认为您还希望简化从.bb
生成的包列表:
PACKAGES = "${PN}"
答案 2 :(得分:0)
如果您想跳过所有食谱包 您可以添加以下行以跳过“.bb”文件中的QA问题
安装-vs-shiped问题:
INSANE_SKIP_${PN} = "installed-vs-shipped"
INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
希望这对你有用。