kowala's home

kowala's home
這裡是我的學習筆記,陸續增加中。
http://kowala21.blogspot.com

2012-06-13

wxDev C++ exe 瘦身計畫

編譯過後的執行檔經常會很肥大,要如何瘦身?本文來探討這個問題。
以前一個例子 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

沒有留言:

張貼留言

請提供您的寶貴意見 ;-)