Dimensione di un .exe dopo la compilazione

di il
6 risposte

Dimensione di un .exe dopo la compilazione

Salve a tutti.
Ho notato che copilando codice c++ con dev-c++ si ottiene una dimensione del file eseguibile molto maggiore rispetto alla compilazione effettuata in ambiente visual studio tramite il batch vcvars.bat e successivamente col comando cl.

Faccio un esempio: considerando il seguente codice:
#include<iostream>

using namespace std;

int main()
{
    cout << "ciao";
}
[/color]

Compilando nei due modi ottengo:

ciao-dev.exe 464 KB
ciao-vis.exe 108 KB


Posso immaginare che ciò dipenda da qualche impostazione di dev-c++ ma non ho idea di quale sia.
Dev-c++ l'ho lasciato così come l'ho installato, a parte qualche opzione dell'ambiente editor.

Qualcuno può aiutarmi?

6 Risposte

  • Re: Dimensione di un .exe dopo la compilazione

    Mica per caso può dipendere da qualche impostazione che permette di scegliere se compilare in modalità DEBUG oppure RELEASE?
  • Re: Dimensione di un .exe dopo la compilazione

    Non hai modo di controllare i parametri che utilizza attraverso la GUI? Mi riferisco ad una traccia di makefile che andrebbe a costruire ed utilizzare.
    Le informazioni debug presenti nel codice aumentano di circa il doppio la dimensione. In Windows non esiste un comando simile a 'strip' di Unix per togliere quelle informazioni e confrontare le dimensioni degli eseguibili?

    Saluti,
    Max
  • Re: Dimensione di un .exe dopo la compilazione

    Girovagando per il web, dopo aver letto qualche articolo, ho fatto alcune prove:
    innanzitutto ho settato "Comprimi l'eseguibile" su yes, tra le "Opzioni di compilazione" di Dev c++, nella scheda "Generazione di codice/Ottimizzazioni" e poi scegliendo "Linker".

    Con questo accorgimento sono passato dai 464 Kbyte a circa 260 Kbyte che per un programmino che ti saluta e basta, sono ancora troppi.

    Cosa più importante e sinceramente che mi ha lasciato un po' perplesso, ho sostituito il codice originale:
    #include<iostream>
    
    using namespace std;
    
    int main()
    {
        cout << "ciao";
    }

    con il seguente (l'equivalente che utilizza la vecchia libreria del C):
    #include<stdio.h>
    
    int main()
    {
            printf("ciao");
    }
    In questo modo, ho ottenuto la sbalorditiva dimensione di soli 5.50 KByte!!!
  • Re: Dimensione di un .exe dopo la compilazione

    A naso sembra di vedere un grande buco. L'eseguibile c++ dovrebbe avere una dimensione lievemente superiore rispetto al padre. 464 o 260 Kbytes sono esageratamente troppi in tutti i sensi...

    ~Max~
  • Re: Dimensione di un .exe dopo la compilazione

    Grazie dell'interessamento Max.
    Esattamente cosa intendi per "grande buco"?
  • Re: Dimensione di un .exe dopo la compilazione

    Per grande buco intendo un errore... ma può esser anche vero che si sia voluto (per motivi che non conosco) la Standard Template Library statica.
    Comunque, supponendo di avere la suddetta libreria basterebbe un link dinamico per ottenere una dimensione più consona e prossima a quella dell'eseguibile C.

    La prova di ciò la dovresti vedere 'dumpando' gli eseguibili.

    Saluti,
    Max
Devi accedere o registrarti per scrivere nel forum
6 risposte