【问题标题】:What is the difference between a static library and a dynamic one [duplicate]静态库和动态库有什么区别[重复]
【发布时间】:2013-12-12 07:42:44
【问题描述】:

在C语言中,静态库和动态库有什么区别?

【问题讨论】:

标签: c dynamic static


【解决方案1】:

这个概念可能有点过于宽泛,无法解释,但我会尽力为您提供一个基本概念,您可以从中进一步学习。

首先,您需要了解什么是库。基本上,库是函数的集合。您可能已经注意到我们正在使用未在我们的代码或该特定文件中定义的函数。为了访问它们,我们包含一个头文件,其中包含这些函数的声明。编译后,有一个称为链接的过程,它将那些函数声明与它们的定义链接在一起,这些定义在另一个文件中。这样的结果就是实际的可执行文件。

现在,我描述的链接是静态链接。这意味着每个可执行文件都包含它需要的每个库(函数集合)。这是浪费空间,因为有许多程序可能需要相同的功能。在这种情况下,在内存中会有更多相同函数的副本。动态链接通过在运行时而不是在编译时链接来防止这种情况。这意味着所有函数都在一个特殊的内存空间中,每个程序都可以访问它们,而不需要它们的多个副本。这减少了所需的内存量。

正如我在回答开头提到的,这是一个非常简化的摘要,可以让您有一个基本的了解。我强烈建议您对此主题进行更多研究。

【讨论】:

  • 简洁明了。谢谢!
  • “这个问题有点太宽泛了,无法解释”...这个问题真的没有错。
【解决方案2】:

在窗口中:

静态库是一个 .lib 文件,它将链接到您的可执行文件中,并且不会随时间改变。

动态库是一个链接到您的可执行文件的 .dll 文件,并且可能会根据您在执行它时加载的 dll 文件而改变。

【讨论】:

  • 不确定我在 Linux 中有 dll。
  • @Daniel 将你的 so 文件重命名为 dll 就可以了 :)
猜你喜欢
  • 2011-07-21
  • 1970-01-01
  • 2011-10-09
  • 2016-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-15
相关资源
最近更新 更多