是否可以通过包含头文件来实现运行时依赖性?

Is runtime dependency possible by including a header file?

案例是:有一个ipk叫A,另一个叫B。
B 对 A 具有运行时依赖性(根据 A 的 bitbake 配方)
但是,B 中的源文件具有 #include <some_header_in_A>
这对我来说看起来像是一个构建依赖项,但后来我无法向自己解释为什么 bitbake 配方具有运行时依赖项。
任何帮助表示赞赏,还有一些解释性教程的 link。

回想一下我的 answer to your other question.

  • 如果 T 取决于 P 那么 Tdo_configure任务依赖 关于 Pdo_populate_sysroot 任务。

  • If T RDEPENDS on P then T's do_build 任务依赖于 P's do_package_write任务。

所以 B RDEPENDSA 上的事实意味着 A 已经 在构建 B 时通过 do_package_write 的所有阶段,包括 do_populate_sysroot。因此 A 导出到 sysroot 的任何 headers 构建 B 时已经存在,构建时依赖性将得到满足。

如果B包含A输出的headers,这个构建时依赖。但是那个 不排除 B 也对 A 具有 运行 时间依赖性。实际上通常是 如果 BA 上是 runtime-dependent 那么它也是 buildtime-dependent 在 A 上,正是因为(对于 C/C++ 包)运行 时间依赖性通常 意味着建筑物 B 需要 headers 来自 A.

如果您的食谱 A 上指定 B RDEPENDS,则它需要一点点 成功的运气。如果恰好是Bdo_configure 包括检查是否存在 A headers、 所有 游戏中的依赖关系使得 Bdo_configure 成为可能 在 Ado_populate_sysroot 完成之前到 运行,然后那个 检查 A headers 可能会失败。

为了使配方完全正确和安全,它应该同时指定 B RDEPENDS A and B DEPENDSA.