是否可以通过包含头文件来实现运行时依赖性?
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 那么 T 的 do_configure
任务依赖
关于 P 的 do_populate_sysroot
任务。
If T RDEPENDS on P then T's do_build
任务依赖于 P's
do_package_write
任务。
所以 B RDEPENDS
在 A 上的事实意味着 A 已经
在构建 B
时通过 do_package_write
的所有阶段,包括
do_populate_sysroot
。因此 A 导出到 sysroot 的任何 headers
构建 B 时已经存在,构建时依赖性将得到满足。
如果B包含A输出的headers,这个是构建时依赖。但是那个
不排除 B 也对 A 具有 运行 时间依赖性。实际上通常是
如果 B 在 A 上是 runtime-dependent 那么它也是 buildtime-dependent
在 A 上,正是因为(对于 C/C++ 包)运行 时间依赖性通常
意味着建筑物 B 需要 headers 来自 A.
如果您的食谱 仅 在 A 上指定 B RDEPENDS
,则它需要一点点
成功的运气。如果恰好是B的do_configure
包括检查是否存在 A headers、 和 所有
游戏中的依赖关系使得 B 的 do_configure
成为可能
在 A 的 do_populate_sysroot
完成之前到 运行,然后那个
检查 A headers 可能会失败。
为了使配方完全正确和安全,它应该同时指定
B RDEPENDS
A and B DEPENDS
在 A.
案例是:有一个ipk叫A,另一个叫B。
B 对 A 具有运行时依赖性(根据 A 的 bitbake 配方)
但是,B 中的源文件具有 #include <some_header_in_A>
这对我来说看起来像是一个构建依赖项,但后来我无法向自己解释为什么 bitbake 配方具有运行时依赖项。
任何帮助表示赞赏,还有一些解释性教程的 link。
回想一下我的 answer to your other question.
如果 T 取决于 P 那么 T 的
do_configure
任务依赖 关于 P 的do_populate_sysroot
任务。If T RDEPENDS on P then T's
do_build
任务依赖于 P'sdo_package_write
任务。
所以 B RDEPENDS
在 A 上的事实意味着 A 已经
在构建 B
时通过 do_package_write
的所有阶段,包括
do_populate_sysroot
。因此 A 导出到 sysroot 的任何 headers
构建 B 时已经存在,构建时依赖性将得到满足。
如果B包含A输出的headers,这个是构建时依赖。但是那个 不排除 B 也对 A 具有 运行 时间依赖性。实际上通常是 如果 B 在 A 上是 runtime-dependent 那么它也是 buildtime-dependent 在 A 上,正是因为(对于 C/C++ 包)运行 时间依赖性通常 意味着建筑物 B 需要 headers 来自 A.
如果您的食谱 仅 在 A 上指定 B RDEPENDS
,则它需要一点点
成功的运气。如果恰好是B的do_configure
包括检查是否存在 A headers、 和 所有
游戏中的依赖关系使得 B 的 do_configure
成为可能
在 A 的 do_populate_sysroot
完成之前到 运行,然后那个
检查 A headers 可能会失败。
为了使配方完全正确和安全,它应该同时指定
B RDEPENDS
A and B DEPENDS
在 A.