|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Jan 2003
Città: Lucca
Messaggi: 2165
|
[C++] Dimensioni .exe
Utilizzo come compilatore Dev-Cpp e quando compilo i programmi in c++ mi vengono degli eseguibili di circa 550 kb (anche se magari il programma non fà niente).
E' possibile con qualche ottimizzazione creare degli eseguibili più piccoli? P.S.: Ho visto che sotto Linux i file compilati in c++ vengono grossi sui 20 kb, come mai questa differenza? Grazie
__________________
Intel G1820T | Asus H87-Pro | 8Gb DDR3 1333Mhz | Crucial M4 64Gb | WD Green 2Tb | Xonar Essence ST My pictures on 500px |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
1) usa librerie dinamiche
2) in fase di link, "strippa" il codice (parametro -s del linker). Così tirerai via anche le informazioni di debug, quindi fallo solo se compili in release.
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
#3 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
La cosa più importante per rendere l'eseguibile più leggero e di togliere tutte le informazioni di debug e tutte le librerie che non vengono usate, io con LCCwin32 sono riuscito ad aver programmi che non facevano niente, ma pesavano solo 7 k.
e l'ultimo programma che sto facendo che ha circa 1500 riche di codice in c pesa solo 35.5k..... Ciao. |
|
|
|
|
|
#4 | ||
|
Senior Member
Iscritto dal: Jan 2003
Città: Lucca
Messaggi: 2165
|
Quote:
Quote:
__________________
Intel G1820T | Asus H87-Pro | 8Gb DDR3 1333Mhz | Crucial M4 64Gb | WD Green 2Tb | Xonar Essence ST My pictures on 500px |
||
|
|
|
|
|
#5 |
|
Senior Member
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 414
|
le librerie dinamiche sono librerie esterne al programma, per esempio le dll di windows, se tu usi delle funzioni che sono in una libreria dinamica non la includi nel codice del tuo programma ma includi solo il codice per chiamarla, invece con una libreria statica il codice viene inserito totalmente nel tuo programma...
Comunque guarda le impostazioni che hai a riguardo del linker e vedi quali librerie vengono gia incluse nel tuo programma e elimina tutte quelle che non servono, consiglio personale se non sai se qualche libreria ti può essere utile, non ti preoccupare toglile tutte al massimo il linker ti dara errore e tu riprovi ad inserirle una per volta. Ciao brutto metodo ma Ciao. |
|
|
|
|
|
#6 | |
|
Senior Member
Iscritto dal: Apr 2000
Città: Roma
Messaggi: 15625
|
Quote:
Se hai disponibili le librerie di runtime dinamiche (dll), devi semplicemente controllare che il linker non stia usando quelle statiche (ovvero non abbia il flag -static, non indichi il path degli archivi statici nel comando di linking, e che le dll dinamiche siano presenti nel tuo ambiente di sviluppo).
__________________
0: or %edi, %ecx; adc %eax, (%edx); popf; je 0b-22; pop %ebx; fadds 0x56(%ecx); lds 0x56(%ebx), %esp; mov %al, %al andeqs pc, r1, #147456; blpl 0xff8dd280; ldrgtb r4, [r6, #-472]; addgt r5, r8, r3, ror #12 |
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 05:36.



















