【发布时间】:2013-11-12 16:12:34
【问题描述】:
当我使用 g++ 编译使用 STL 的程序时,库如何链接到我的程序?动态还是静态?
静态对我来说听起来很奇怪,因为这意味着每个使用 STL 的单个 C++ 程序都必须在内部包含它。另一方面,动态链接对我来说也很奇怪,就像所有 OOP 的东西一样,我看不出如何动态链接库并且还支持不同类型的对象...
那么这里到底发生了什么?
【问题讨论】:
-
模板总是根据需要实例化(因此它们总是包含在你的二进制文件中)其余的可以动态链接
-
STL 已成为 C++ 的一部分,因此,它作为 C++ 链接(如果需要,动态链接)
-
@DieterLücking:C/C++ 运行时可以静态或动态链接,但 STL 部分不过是头文件的集合。
-
STL 绝不是面向对象的。
-
@ZacHowland 我敢打赌,一些模板专业化是外部的,并且随库一起提供(例如:语言环境)
标签: c++ linux g++ static-linking dynamic-linking