Формат файла не распознается при сборке приложения Petalinux

Я использую Petalinux 2017.2 и прилагаемые инструменты для создания образа Linux для платы Zynq ZC702. Я пытаюсь добавить предварительно скомпилированный исполняемый файл в свои rootfs с помощью рецепта bitbake.

SUMMARY = "Demo on ARM-Linux"
SECTION = "PETALINUX/apps"
LICENSE = "MIT"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"

SRC_URI = " \
    file://Demo1.out \
        "

FILES_${PN} = " \
    /home/root/Demo/ \
    /home/root/Demo/Demo1.out \
        "

S = "${WORKDIR}"

do_install() {
    install -d ${D}/home/root/Demo
    install -m 0755 ${S}/Demo1.out ${D}/home/root/Demo
}

Когда я пытаюсь собрать rootfs с включенным моим приложением, я получаю эту ошибку:

ERROR: demo-1.0-r0 do_package: objcopy failed with exit code 1 (cmd was 'arm-xilinx-linux-gnueabi-objcopy' --only-keep-debug '/home/common/peta_proj_2017.2_secure/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/demo/1.0-r0/package/home/root/Demo/Demo1.out' '/home/common/peta_proj_2017.2_secure/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/demo/1.0-r0/package/home/root/Demo/.debug/Demo1.out'):
arm-xilinx-linux-gnueabi-objcopy:/home/common/peta_proj_2017.2_secure/build/tmp/work/cortexa9hf-neon-xilinx-linux-gnueabi/demo/1.0-r0/package/home/root/Demo/Demo1.out: File format not recognized
ERROR: demo-1.0-r0 do_package: Function failed: split_and_strip_files

Я предполагаю, что у objcopy есть проблема с моим файлом, который был скомпилирован для arm-linux-gnueabihf, но я уже знаю, что это работает, так как я пытался скопировать его в rootfs вручную после загрузки Linux и протестировал его. Я бы попытался перекомпилировать его с помощью цепочки инструментов arm-xilinx-linux-gnueabi, но в ней отсутствуют некоторые библиотеки, которые мне нужны. Я не знаю, почему objcopy все равно вызывается для этой операции. Все, что я хочу, это переместить файл в rootfs, но по какой-то причине он выполняет всю эту дополнительную работу. Есть ли способ заставить Bitbake игнорировать формат файла?


person superb owl    schedule 13.12.2018    source источник


Ответы (1)


Похоже, проблема в том, что objcopy пытается удалить символы, и, как вы сказали, используемая цепочка инструментов отличается от той, которая использовалась для ее создания.

Можно попробовать установить:

INHIBIT_PACKAGE_STRIP="1"

где-то (возможно, в вашем local.conf).

Он должен пропустить шаг, на котором система сборки пытается удалить символы отладки из двоичных файлов, поэтому, вероятно, не будет вызывать objcopy.

1 [https://www.yoctoproject.org/docs/current/mega-manual/mega-manual.html#var-INHIBIT_PACKAGE_STRIP]1

person aehs29    schedule 13.12.2018
comment
Когда я добавляю эту строку в свой файл local.conf и выполняю сборку, я получаю [INFO] build project [INFO] sourcing bitbake ERROR: Failed to source bitbake ERROR: Failed to build project. Могу ли я добавить это куда-нибудь еще, например, в конкретный файл bitbake, который мне нужно удалить? - person Eliezer Miron; 18.03.2019
comment
По-видимому, мне просто не хватало кавычек вокруг 1. Возможно, вы захотите отредактировать свой ответ, чтобы включить их. Однако вторая часть моего вопроса остается в силе: возможно ли временно включить эту опцию только для определенных файлов bitbake? - person Eliezer Miron; 18.03.2019
comment
Вы можете использовать настройку в файле рецепта, тогда она повлияет только на этот рецепт. - person Erik Botö; 04.06.2019