Я просто из любопытства сделал следующее:
У меня есть два рецепта. p>
- myapp.bb: создает простое приложение myapp, использующее общую библиотеку libA.so.1.1
- libprovider.bb: создает библиотеку libA.so.1.1, которая используется by myapp (точнее, это создает libA.so.1.1 и libA.so, которые являются символической ссылкой на libA.so.1.1)
и я вручную копирую libA.so.1.1 в каталог files/, в котором существует рецепт myapp.bb, и написал myapp.bb следующим образом:
Код: Выделить всё
...
...
SRC_URI = "file://mycode.c \
file://myheader.h \
file://libA.so \
file://libA.so.1.1 \
"
S = "${WORKDIR}"
do_compile() {
${CC} mycode.c ${LDFLAGS} -o myapp -lA -L.
}
do_install() {
install -d ${D}${bindir}
install -m 0755 myapp ${D}${bindir}
}
Когда я запускаю $ bitbake myapp в этом состоянии, сборка завершается с ошибкой и появляется следующее сообщение об ошибке:
Код: Выделить всё
requires , but no providers in its RDEPENDS [file-rdeps]
Но я также нашел в документации Yocto, что в системе сборки yocto есть функция "Автоматически добавленные зависимости времени выполнения".
Согласно руководству, я считаю, что libprovider следует добавить в RDEPENDS моего приложения, даже если я не добавляю RDEPENDS:${PN} += "libprovider".
В каталоге tmp/pkgdata//runtime находятся файлы описания зависимостей libprovider и myapp:
- libprovider
Код: Выделить всё
...
FILESRPROVIDES: /usr/lib/libA.so.1.1:libprovider: libA.so.1.1()(64bit)
...
- мое приложение
Код: Выделить всё
...
FILESRDEPENDS: /usr/bin/myapp:myapp: ... ... libA.so.1.1()(64bit) ...
...
< strong>Дополнительное примечание
Когда я добавил DEPENDS += "libprovider" в myapp.bb с назначением NO RDEPENDS, "Автоматически добавлены зависимости времени выполнения" " работает хорошо,
Сборка myapp.bb прошла успешно,
и окончательный fmage содержит пакет libprovider, хотя я только добавлено IMAGE_INSTALL:append = "myapp" в local.conf
Подробнее здесь: https://stackoverflow.com/questions/791 ... g-in-yocto
Мобильная версия