2012-06-11 74 views
1

可能重複:
GCC C++ 「Hello World」 program -> .exe is 500kb big when compiled on Windows. How can I reduce its size?爲什麼我的C++可執行文件如此之大?

我剛開始讀一些C++在線教程和第一課是Hello World程序。當我將程序編譯爲可執行文件時,即使它只是一個簡單的Hello World控制檯程序,它的大小也超過了400kb。它應該是這個大嗎?如果沒有,爲什麼會發生?難道我做錯了什麼?

這裏是源:

#include <iostream> 
using namespace std; 
int main() 
{ 
    cout<<"Hello World"; 
    cin.get(); 
} 

任何幫助將真正理解。謝謝

+1

你如何編譯你的程序? –

+4

您是否構建了調試版本或發行版本?你使用什麼編譯器?什麼OS?可執行文件的大小有很多因素。我的猜測是你有一個調試版本。 – pstrjds

+0

與調試/發佈無關。這只是''引起相當大的一次性成本。隨着計劃的增長,這個成本變得可以忽略不計。 – DevSolar

回答

6

靜態鏈接C和/或C++運行時可以大大增加大小。另外,編譯包含調試信息的程序可以增加大小。

2

它可能是調試信息。如果你刪除它(通過在Visual Studio中以釋放模式構建,或在Linux中使用strip命令),它將會小得多。

1

不要鏈接你的應用程序靜態。儘量讓它動態。

+0

我如何使它動態?我正在使用dev-cpp。 – user1449029

+0

對不起,我不知道這個IDE。剛纔我與谷歌的移動連接太差了。 – rekire

1

這幾乎肯定是因爲您創建了一個靜態可執行文件,即可以獨立運行且不依賴於運行時庫的靜態可執行文件。請參閱您的編譯器/鏈接器的文檔以瞭解如何避免此問題。

編輯:

從你的代碼我得到13540個字節爲一個動態鏈接的可執行文件(在Linux 4.3.2 GCC),但爲6.7MB靜態鏈接的可執行文件。

0

以調試模式構建將編譯並鏈接未以任何方式(速度/大小)進行優化的代碼,並最終導致包含調試版系統庫的膨脹執行程序。

如果切換到發佈模式,可以優化編譯器和鏈接器,只使用它們在最終exec中需要的功能,並使用它們的發佈版本。 那樣,如果你選擇了優化空間,你將最終得到'希望'更小的執行者。

+0

嗨,我該如何切換到發佈模式? – user1449029

+0

如果你正在使用Visual Studio,在你的IDE你必須默認選擇調試和發佈模式,只需要選擇一個你想要的。如果你通過CLI進行編譯,-g用於調試模式,那麼省略它來發布。請參閱gcc:http://gcc.gnu.org/onlinedocs/gcc/Debugging-Options.html – fduff

相關問題