編譯過後的執行檔經常會很肥大,要如何瘦身?本文來探討這個問題。
以前一個例子 Dev C++ psapi.h 使用方法 來說明
#include <cstdlib>
//#include <iostream>
#include <windows.h>
#include <psapi.h>
#include <stdio.h>
using namespace std;
int main(int argc, char *argv[]){
MODULEINFO mi = {0};
GetModuleInformation( GetCurrentProcess(), GetModuleHandle( "psapi.dll" ), &mi, sizeof(mi) );
printf("(1) psapi.dll is 0x%p\n",mi.lpBaseOfDll);
printf("(2) psapi.dll is 0x%p\n",GetModuleHandle( "psapi.dll" ));
//cout << "Press the enter key to continue ...";
//cin.get();
system("PAUSE");
return EXIT_SUCCESS;
}
這個檔案若使用 wxDev C++ 預設值來編譯,出來的執行檔將會是 1.43MB
若我們不使用肥大的函數,改使用舊的較陽春函數,編譯後執行檔將會是 427kb
改
cout << "Press the enter key to continue ...";
cin.get();
為
system("PAUSE");
不要使用[1]
#include <iostream>
如果再把除錯資訊去除,那體積縮減量更為可觀,編譯後執行檔將會是 7kb
我們只須在 Linker 中加上參數 -s 即可。[2]
reference
[1].http://stackoverflow.com/questions/1042773/gcc-c-hello-world-program-exe-is-500kb-big-when-compiled-on-windows-how
[2].http://www.mingw.org/wiki/Large_executables
沒有留言:
張貼留言
請提供您的寶貴意見 ;-)