Файл плагина Build root скомпилирован для целевой архитектуры, хотя позже она использовалась в Makefile - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь создать пакет для dietspla sh для сборки root, и я добавил файлы

Config.in

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

dietspla sh .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

И file из src / genstaticlo go

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 / genstaticlo go скомпилировано для цели, но выполнено Makefile.am во время процесса сборки. Как мне сказать make для компиляции src / genstaticlo go для машины сборки, а не для цели? Хотя репозиторий не моя работа, теоретически возможно изменить make-файл после загрузки.

Спасибо за вашу помощь!

1 Ответ

0 голосов
/ 29 января 2020

Вам нужно будет исправить файл Makefile.am для поддержки кросс-компиляции. См. этот старый ответ для деталей. Короче говоря, вам нужно что-то подобное в Makefile.am:

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

Поскольку вы будете вносить исправления в Makefile.am, вам также нужно будет установить DIETSPLASH_AUTORECONF = YES в Build root dietspla * Файл 1009 * .mk.

...