构建Petalinux应用程序时出现“无法识别文件格式”

时间:2018-12-13 15:25:09

标签: embedded-linux yocto bitbake zynq petalinux

我正在使用Petalinux 2017.2和随附的工具来为Zynq ZC702板构建Linux映像。我正在尝试使用bitbake配方将预编译的可执行文件添加到我的rootfs中。

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编译时有问题,但是我已经知道它可以工作,因为我尝试在引导和测试Linux之后手动将其复制到rootfs。我会尝试使用arm-xilinx-linux-gnueabi工具链重新编译它,但是它缺少一些我需要的库。我不知道为什么反正为此操作调用objcopy。我想要的只是将文件移动到rootfs,但由于某种原因,它正在对它进行所有这些额外的工作。有什么方法可以使位烘焙忽略文件的格式?

1 个答案:

答案 0 :(得分:3)

看起来问题在于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