为什么 g++ 链接标准库

Why does g++ link the standard library?

本文关键字:标准 链接 g++ 为什么      更新时间:2023-10-16

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

#include <iostream>
using namespace std;
int main ()
{
  cout << "Hello World!";
  return 0;
}

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

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

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

你用过它。

真的很明显。

Iostreams是模板,因此代码在您的对象中发出,而不是在共享库中发出,但在启用优化的情况下,(剥离)大小不应大于实现helloworld所需的大小。

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