13

小さな C プログラムのコンパイルを含むカスタム yocto レシピを作成しようとしています。ビルド中 -

$ 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 チェックを削除する方法を知っている人がいるかどうか疑問に思っていました。エラーの Google 検索は、これまでのところ無益であることが証明されています。

乾杯

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パッケージに行くことを宣言する必要があります。

現在、2 つのオプションがあります。最初に標準ディレクトリを使用する${D}/usr/binか、2 番目に .debug を dbg に追加します - 次のようなパッケージ:

FILES_${PN}-dbg += "/etc/interfaces/bin/.debug"

は の後に作成さdo_install_appendれるため、を削除できます。.debugdo_install

2 番目のオプションを使用する場合は、gdb のset debug-file-directory directoriesオプションを使用して gdb を構成し、バイナリをデバッグする必要があります。詳細はこちら

于 2013-12-17T07:42:53.647 に答える
11

.debug ディレクトリは、 のsplit_and_strip_files関数の一部として自動的に生成されmeta/classes/package.bbclassます。

この関数は、結果として得られるファイルdo_installを取得し、それらを複数のパッケージに分割します:${PN}基本ファイルとストリップされたバイナリを含み、${PN}-dbgデバッグ シンボルなどを含みます。

ファイルsplit_and_strip_filesに次を追加することで抑制できます。.bb

INHIBIT_PACKAGE_DEBUG_SPLIT = "1"
INHIBIT_PACKAGE_STRIP = "1"

また、あなたから生成されたパッケージのリストを単純化したいと思います.bb:

PACKAGES = "${PN}"
于 2014-02-18T17:46:49.660 に答える