Сбой сборки Yocto для статической библиотеки с ошибкой «Не найдено совпадений» - PullRequest
0 голосов
/ 02 июля 2019

Я пытаюсь включить рецепт Yocto в изображение, которое я написал для статической библиотеки.

  1. Создана папка recipes-test / static в моем собственном слое.
  2. Создал файл «static_0.1.bb» в этой папке
  3. Создана папка «files» внутри папки «recipes-test / static»
  4. Скопированы следующие файлы.

hello.c

char * hello (void)
{
  return "Hello";
}

world.c

char *world(void)
{
  return "World";
}

helloworld.h

#ifndef HELLOWORLD_H
#define HELLOWORLD_H
char * hello (void);
char * world (void);
#endif
  1. Создан рецепт со следующим содержанием:

DESCRIPTION = "Простой пример статического библиотеки helloworld" ЛИЦЕНЗИЯ = "MIT" LIC_FILES_CHKSUM = "file: // $ {COMMON_LICENSE_DIR} / MIT; md5 = 0835ade698e0bcf8506ecda2f7b4f302"
SRC_URI = "file: //hello.c \ файл: //world.c \ file: //helloworld.h "

S = "${WORKDIR}"

do_compile() {
        ${CC} -c hello.c world.c
        ${AR} -cvq libhelloworld.a hello.o world.o
}

do_install() {
        install -d ${D}${includedir}
        install -d ${D}${libdir}
        install -m 0755 helloworld.h ${D}${includedir}
        install -m 0755 libhelloworld.a ${D}${libdir}
}

Когда я говорю bitbake static, в папке tmp / work создается статическая библиотека

Когда я включил его в файл conf / local.conf со следующей строкой: IMAGE_INSTALL_append = "статический"

Сбой сборки на этапе создания корневого файла со следующей ошибкой:

not found other for: 
not found modules for: 
not found deltainfo for: 
not found updateinfo for: 
oe-repo: using metadata from Tue 02 Jul 2019 03:54:50 AM UTC.
No module defaults found
No match for argument: static
Error: Unable to find a match

Можете ли вы помочь мне устранить ошибку

Обновление: после изменения IMAGE_INSTALL_append = "static-staticdev" я получаю следующую ошибку:

No module defaults found
--> Starting dependency resolution
--> Finished dependency resolution
Error: 
 Problem: package static-staticdev-0.1-r0.cortexa7t2hf_neon_vfpv4 requires static-dev = 0.1-r0, but none of the providers can be installed
  - conflicting requests
  - nothing provides static = 0.1-r0 needed by static-dev-0.1-r0.cortexa7t2hf_neon_vfpv4
(try to add '--skip-broken' to skip uninstallable packages or '--nobest' to use not only best candidate packages)

1 Ответ

1 голос
/ 02 июля 2019

Yocto автоматически разделит файлы, установленные в ${D}, на разные пакеты.В вашем случае helloworld.h перейдет в ${PN}-dev (${PN} равно статическому в вашем случае, но я пишу $ {PN}, чтобы избежать путаницы), а libhelloworld.a перейдет в ${PN}-staticdev, но, поскольку нет другогоВ файлах не будет пакета с именем ${PN}, поскольку он будет пустым.

Если вы действительно хотите, чтобы статическая библиотека оказалась в образе, используйте IMAGE_INSTALL_append = "static-staticdev"

. Также естьпроблема в том, что нет файла, который будет включен в простой пакет ${PN}, что по умолчанию означает, что такой пакет не будет создан.Это проблема, поскольку пакет ${PN}-dev имеет зависимость времени выполнения от ${PN}.Это можно решить, разрешив создание ${PN}, даже если оно пустое, включите его, добавив ALLOW_EMPTY_${PN} = "1"

...