运行时依赖性和构建依赖性概念

时间:2015-06-15 12:21:29

标签: c++ dependencies

我听说过构建依赖/运行时依赖。它们是非常自我解释的术语。据我所知,构建依赖项用于编译时所需的组件。例如,如果A对B具有构建依赖性,则不能在没有B的情况下构建A.另一方面,运行时依赖性是动态的。如果A对B具有运行时依赖性,则可以在没有B的情况下构建A,但如果没有B则不能运行 但是这些信息太浅了。我想更好地阅读和理解这些概念。我一直在谷歌搜索但找不到来源,你能给我一个链接或正确的关键词来搜索吗?

1 个答案:

答案 0 :(得分:0)

我会尽量保持简单和理论化。

当你编写调用函数" func"的代码时,编译器需要你的函数描述符(例如" int func(char c);"通常在.h文件中可用)来验证参数正确性和链接器需要您的函数实现(实际代码所在的位置)。

操作系统提供将功能实现分离到不同编译模块的机制。

通常需要它
  1. 更好的代码重用(多个应用程序可以使用相同的代码,具有不同的数据上下文)
  2. 更高效的编译(您不需要重新编译所有依赖库)
  3. 部分升级
  4. 编译库的分发,未披露源代码
  5. 为了支持这种功能,编译器像往常一样提供了函数描述符(.h文件)。 Linker提供包含函数存根的lib文件。操作系统负责在应用程序加载过程中加载实际的实现文件(如果尚未为不同的应用程序加载)并将实际函数映射到新应用程序的内存中。

    动态加载功能也扩展到面向对象的语言(C ++,C#,Java等)。

    实际实现依赖于操作系统 - 动态链接在Windows中实现为DLL文件,在Linux中实现为SO文件

    特殊操作系统相关技术可用于在使用相同动态库的不同应用程序之间共享上下文(变量,对象)。

    Meir Tseitlin