簡體   English   中英

為什么g ++鏈接標准庫?

[英]Why does g++ link the standard library?

我有一段簡單的C ++代碼:

#include <iostream>
using namespace std;

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

當我生成此代碼的程序集時,我會得到一個巨大的程序集文件,我認為這是標准庫的編譯。 為什么會發生這種情況,如何預防呢?

許多標准庫由模板組成。 當您使用模板時,它會專門供您使用,並且專門化將成為二進制文件的一部分。 盡管可以確保使用extern模板確保僅在一個翻譯單元中進行專業化處理,但這是無法避免的。

std :: cout是標准庫的一部分。

你用過的

真的很明顯。

Iostream是模板,因此代碼是在對象中發出的,而不是在共享庫中發出的,但是在啟用優化的情況下,(剝離的)大小不應大於實現helloworld所需的大小。

有關其他答案,請參見http://www2.research.att.com/~bs/bs_faq.html#Hello-world

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM