se compilo il file .exe in delphi con pacchetti built-in, genera circa 600kb di file EXE. Tuttavia, se lo compilo con i pacchetti di runtime, la somma delle dimensioni (.exe + tutte le richieste .BPL) è di circa 6-8 MB (a seconda della versione del compilatore). Perché la differenza è così significativa?Delphi: .exe con pacchetti integrati: 600kb, .exe + BPL esterni: 6MB. Perché?
9
A
risposta
14
Perché se si esegue una compilazione normale, il linker può eseguire "smart linking" sulle DCU e rimuovere il codice di cui il programma non ha mai bisogno. Ma i pacchetti sono precostruiti e contengono tutto il codice, quindi non è possibile collegarli in modo intelligente a dimensioni inferiori.
4
Penso che si presuma che tutti i file BPL siano collegati quando si genera un programma con BPL incorporato. Questo non è il caso. Nella fase finale della compilazione, il compilatore Delphi entra in collegamento tra tutto. Lì omette i moduli, che sono nella BPL ma non chiamati direttamente o indirettamente dal tuo programma.
Così, si finisce con un ingombro molto più piccolo, solo i moduli effettivamente necessari sono nell'exe finale.
Problemi correlati
- 1. C++ Incorpora file .exe esterni nel mio exe compilato.
- 2. Pacchetti Nuget che sono veramente comandi exe?
- 3. Impostazione dell'icona EXE in Delphi 7
- 4. Perché costruire con i pacchetti runtime Crea file più piccolo il file EXE?
- 5. Funzionalità di callback tra Delphi DLL e Delphi EXE
- 6. Qt singolo EXE con LGPL?
- 7. Elimina pacchetti integrati in Emacs
- 8. EXE di installazione invisibile
- 9. Fare un portatile (exe) con Python 3.1?
- 10. Delphi: annulla i nomi in BPL
- 11. Compilare PyPy to Exe
- 12. MSDOS "Hello World" EXE
- 13. Modifica compilata. Net Exe
- 14. Esecuzione .exe da Javascript
- 15. MinGW Link Single EXE
- 16. Unisci msi e exe
- 17. Decompilazione EXE in ASM
- 18. Bundle .net exe, dlls, .net ambiente e dll nativo in singolo exe
- 19. Invoke-Expression con exe in Programmi
- 20. Esegui .exe su Windows con Ansible
- 21. È possibile utilizzare "exe installers" con pip?
- 22. Che cosa fa collect2.exe?
- 23. Perché Delphi (dcc32.exe) ha un'opzione per impostare un "percorso di ricerca dello spazio dei nomi"?
- 24. XE2 exe e la posizione DCU
- 25. JAR nascosto all'interno di EXE?
- 26. Progetto Python 3 in exe?
- 27. Acquisizione dell'output EXE in PowerShell
- 28. Iron Python/Iron Ruby EXE
- 29. Sistema di plugin per l'applicazione Delphi - bpl vs dll?
- 30. Esegui .NET exe in linux
Non solo interi moduli. Lo smartlinker può ritagliare singole funzioni e procedure dall'interno di un'unità se determina che non vengono mai utilizzate. –