为什么g ++链接标准库?

时间:2012-06-18 12:32:11

标签: c++

我有一段简单的c ++代码:

#include <iostream>
using namespace std;

int main ()
{
  cout << "Hello World!";
  return 0;
}

当我生成这段代码的程序集时,我得到一个庞大的汇编文件,我认为它是标准库的汇编。为什么会发生这种情况?如何防止它?

2 个答案:

答案 0 :(得分:0)

许多标准库都是由模板组成的。当您使用模板时,它会专门供您使用,专业化将成为您的二进制文件的一部分。这是无法避免的,尽管您可以确保仅使用extern模板在单个翻译单元中进行专业化。

答案 1 :(得分:-2)

std :: cout是标准库的一部分。

你用过它。

非常明显。

Iostream是模板,所以代码是在对象中发出的,而不是在共享库中发出,但启用了优化后,(剥离的)大小不应大于实现helloworld所需的大小。

有关其他答案,请参阅http://www2.research.att.com/~bs/bs_faq.html#Hello-world