13

我正在尝试构建一个自定义 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"
4

3 回答 3

16

Yocto/OE.debug在存放二进制文件的目录下生成一个-directory。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 以调试二进制文件。在这里阅读更多

于 2013-12-17T07:42:53.647 回答
11

split_and_strip_files.debug 目录作为 .debug 中函数的一部分自动生成meta/classes/package.bbclass

此函数获取生成的文件do_install并将它们拆分为多个包:${PN}包含基本文件和剥离的二进制文件,${PN}-dbg带有调试符号等。

split_and_strip_files您可以通过将以下内容添加到.bb文件中来抑制:

INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"

我认为您还想简化从您的.bbto 生成的软件包列表:

PACKAGES = "${PN}"
于 2014-02-18T17:46:49.660 回答
0

如果您想跳过所有配方包,您可以添加以下行以跳过“.bb”文件中的 QA 问题

对于已安装的 -vs-shiped 问题:

INSANE_SKIP_${PN} = "installed-vs-shipped"

对于条带化包问题:

INHIBIT_PACKAGE_STRIP = "1"
INHIBIT_PACKAGE_DEBUG_SPLIT = "1"

希望这对你有用。

于 2017-03-30T05:03:06.933 回答