У меня возникли проблемы с пониманием рецептов битбака. (Мне плохо написано, что мне нужно изменить, я обычно читал и понимал весь механизм, но, к сожалению, я нахожусь в плотном графике). Не могли бы вы помочь мне понять разницу между RDEPENDS и DEPENDS. Я прочитал ссылку, и я знаю, что они стоят за зависимость от выполнения и строят зависимость соответственно, но каков эффект на нее в рецепте битбокса? Насколько я понимаю, если пакет A зависит от другого B, B должен быть построен и готов к включению A для сборки. Bitbake не связан с временем выполнения, он существует только для создания и развертывания пакетов. Так в чем же разница?
Время выполнения Bitbake vs build
Ответ 1
Как вы говорите, битбаке занимается созданием и развертыванием пакетов, и ему необходимо развернуть все пакеты, необходимые для удовлетворения зависимостей времени выполнения от целевой системы.
Если ваш рецепт говорит, что цель T DEPENDS на целевой P, которая сообщает битбаке, что он должен построить P до T, потому что T не может быть построен без P.
Если в вашем рецепте указано, что T RDEPENDS на P, это говорит Bitbake, что он должен развернуть P в целевой системе, если он разворачивает T, потому что T не может использоваться без P.
Например, вы не можете создавать tar без компилятора C, но вам не нужен компилятор C для использования tar. Вы можете развернуть tar без развертывания компилятора C. Так что DEPEND.
С другой стороны, вы не можете использовать tar без библиотеки времени выполнения. Если развертывается tar, необходимо также запустить библиотеку времени выполнения C. Так что RDEPEND.
Биты:
-
Если T
DEPENDSна P, то Tdo_configureдля зависимости от задачи Pdo_populate_sysroot. -
Если T
RDEPENDSна P, то Tdo_buildзадачу, зависящую от задачи pdo_package_write.