這只是一段「hello world」C++代碼。爲什麼clang生成的二進制文件大於visual studio生成的二進制文件
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("hello");
return 0;
}
我用clang 3.9編譯了代碼。命令是:clang -m32 hello.cpp -o hello.exe,目標可執行文件大小約爲44kb。它與添加到命令中的「O3」選項沒有任何區別。
雖然我與Visual Studio 2010編譯它,目標可執行文件的大小隻有6KB 爲發行版本和28KB的調試版本。
任何人都可以幫助解釋兩個版本的二進制文件之間的區別。 任何幫助,將不勝感激。
我的水晶球說Clang默認靜態鏈接運行時庫,而MSVC默認動態鏈接它們。這意味着MSVC生成的二進制文件較小,但需要一個輔助運行時DLL。檢查您的編譯器/鏈接器設置以驗證確實如此。 –
您也可以嘗試使用Clang的「-Oz」標誌。 – arrowd
@CodyGray謝謝。您的水晶球是否知道如何動態鏈接運行時庫。我沒有提示Google搜索。 – user3113626