Buildroot 插件文件是为目标架构编译的,虽然稍后会在 Makefile 中使用

Buildroot plugin file is compiled for the target architecture altough used later in Makefile

我正在尝试为 buildroot 的 dietsplash 创建一个包,并且我已经添加了文件

Config.in

config BR2_PACKAGE_DIETSPLASH
    bool "dietsplash"
    help
        dietsplash is an simple splash screen service for
        embedded devices. It has support for animations.

dietsplash.mk

################################################################################
#
# dietsplash
#
################################################################################

DIETSPLASH_VERSION = v0.3
DIETSPLASH_SOURCE = dietsplash-$(DIETSPLASH_VERSION).tar.gz
DIETSPLASH_SITE = git://github.com/lucasdemarchi/dietsplash.git
DIETSPLASH_AUTORECONF = YES

$(eval $(autotools-package))

github 存储库是 https://github.com/lucasdemarchi/dietsplash

make 的输出是:

>>> dietsplash v0.3 Building
PATH="/media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/host/bin:/media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/host/sbin:/home/justus_fluegel/.pub-cache/bin/:/usr/share/flutter/flutter/bin/cache/dart-sdk/bin/:/usr/share/flutter/flutter/bin/:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin:/snap/bin:/usr/local/texlive/2019/bin/x86_64-linux"  /usr/bin/make -j5  -C /media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/build/dietsplash-v0.3/
make[1]: Entering directory '/media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/build/dietsplash-v0.3'
/usr/bin/make  all-am
make[2]: Entering directory '/media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/build/dietsplash-v0.3'
  GEN      src/background.h
/bin/bash: src/genstaticlogo: cannot execute binary file: Exec format error
Makefile:1017: recipe for target 'src/background.h' failed
make[2]: *** [src/background.h] Error 126
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory '/media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/build/dietsplash-v0.3'
Makefile:400: recipe for target 'all' failed
make[1]: *** [all] Error 2
make[1]: Leaving directory '/media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/build/dietsplash-v0.3'
package/pkg-generic.mk:238: recipe for target '/media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/build/dietsplash-v0.3/.stamp_built' failed
make: *** [/media/justus_fluegel/PROJECTS/buildroot/buildroot-2019.11.1/output/build/dietsplash-v0.3/.stamp_built] Error 2

文件的src/genstaticlogo

src/genstaticlogo: ELF 32-bit LSB executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 4.19.0, not stripped

我认为问题是 src/genstaticlogo 是为目标编译的,但在构建过程中由 Makefile.am 执行。我如何告诉 make 为构建机器而不是目标编译 src/genstaticlogo?虽然仓库不是我做的,但理论上可以下载后修改makefile。

感谢您的帮助!

您需要修补 Makefile.am 以支持交叉编译。有关详细信息,请参阅 this old answer。简而言之,您将需要在 Makefile.am:

$(genstaticlogo_OBJECTS): CC=$(CC_FOR_BUILD)
$(genstaticlogo_OBJECTS): CFLAGS=$(CFLAGS_FOR_BUILD)
$(genstaticlogo_OBJECTS): CPPFLAGS=$(CPPFLAGS_FOR_BUILD)

由于您要修补 Makefile.am,因此您还需要在 Buildroot dietsplash.mk 文件中设置 DIETSPLASH_AUTORECONF = YES