链接的向上依赖是什么?

时间:2012-06-15 14:50:31

标签: macos ld

ld支持一些选项来指定“对OS X的向上依赖性。这里有什么向上的依赖?

-upward-lx  This is the same as the -lx but specifies that the dylib is an upward dependency.
-upward_framework name[,suffix]
             This is the same as the -framework name[,suffix] but also specifies that the framework is an upward dependency.

1 个答案:

答案 0 :(得分:2)

向上依赖是违反正常依赖顺序的东西。假设库“A”中的代码调用库“B”中实现的函数;库“A”取决于“B”。现在假设库“B”还包含依赖库“A”中某些内容的代码;这是一种向上的依赖(通常是非常破碎的事情)。

我认为如果您遇到这种情况,那么您应该通过调解器进行间接回调而不是依赖链接器来解决代码中的问题。

回调/中介方案的一个例子如下......

想象一下,库“A”中的代码仍依赖于库“B”,但库“B”具有注册回调函数以执行特定操作的机制。作为中介的第三模块可以通过来自库“B”的回调来安排库“A”中的功能,而不是直接使库“B”调用库“A”。链接器现在只需解析从“A”到“B”的依赖关系,并且在运行时,从“B”到“A”的受控关系是伪造的,而不是在链接阶段需要向上依赖链。