当我使用STL在Linux上编译C++程序时,STL库是如何链接的?

pap*_*p42 2 c++ linux g++ dynamic-linking static-linking

当我编译一个使用g ++使用STL的程序时,库如何链接到我的程序?动态还是静态?

对我来说静态听起来很奇怪,因为这意味着每个使用STL的C++程序都必须在内部包含它.另一方面,动态链接声音对我来说也很奇怪,因为所有的OOP内容我都没有看到库如何动态链接并且还支持不同类型的对象......

那究竟发生了什么?

Zac*_*and 5

答案在您的问题中: STL代表"标准模板库".由于模板位于头文件中并且仅在需要时(例如使用)进行实例化,因此您可以包含每个STL头(如果需要),如果您不使用任何一个,则二进制文件不会更大.

STL不是必须链接的.lib或.a文件.它是头文件的集合.