si compilo el archivo .exe en Delphi con paquetes integrados, genera un archivo EXE de aproximadamente 600kb. Sin embargo, si lo compilo con paquetes de tiempo de ejecución, la suma de tamaños (.exe + todos necesarios .BPL) es de aproximadamente 6-8 MB (dependiendo de la versión del compilador). ¿Por qué la diferencia es tan significativa?Delphi: .exe con paquetes integrados: 600kb, .exe + BPLs externos: 6MB. ¿Porqué es eso?
9
A
Respuesta
14
Porque si ejecuta una compilación normal, el enlazador puede hacer "enlaces inteligentes" en las DCU y eliminar el código que su programa nunca necesita. Pero los paquetes están preconstruidos y tienen todo el código incluido, por lo que no puede vincularlos de manera inteligente a un tamaño más pequeño.
4
Creo que asume que todos los archivos BPL están vinculados cuando genera un programa con BPL incorporados. Ese no es el caso. En la etapa final de compilación, el compilador de Delphi va a vincular todo junto. Allí omite los módulos, que están en el BPL pero que su programa no llama directa o indirectamente.
Por lo tanto, terminas con una huella mucho más pequeña, solo los módulos realmente necesarios están en el exe final.
Cuestiones relacionadas
- 1. Delphi EXE compressor?
- 2. Información de depuración {$ D +} aumenta el tamaño de mi EXE con 6MB
- 3. Nuget paquetes que son realmente comandos exe?
- 4. RegisterStartupScript no funciona con ScriptManager, Updatepanel. ¿Porqué es eso?
- 5. Configuración del ícono EXE en Delphi 7
- 6. ¿Es posible usar "instaladores exe" con pip?
- 7. Use SSL con Delphi y aún tenga un solo exe
- 8. Obtener lista de BPLS necesarios para una DLL dado, EXE o BPL
- 9. Ejecutando EXE con los parámetros
- 10. Qt solo EXE con LGPL?
- 11. Compile independiente exe con Cygwin
- 12. ¿Por qué es un archivo ensamblador .exe?
- 13. ¿Es posible regenerar símbolos para un exe?
- 14. ¿Qué hace collect2.exe?
- 15. EXE packer/EXE Compresser para la aplicación en C#/VB.net
- 16. Merge msi y exe
- 17. MSDOS "Hello World" EXE
- 18. Ejecutando .exe desde Javascript
- 19. MinGW Link Single EXE
- 20. Online Exe Builder
- 21. Hacer un portátil (exe) con Python 3.1?
- 22. GetObject y VB6 ActiveX exe
- 23. .NET Huella de memoria EXE
- 24. cómo transformar CLR a EXE
- 25. convertir html + js a exe
- 26. Proyecto Python 3 en exe?
- 27. ¿JAR oculto dentro de EXE?
- 28. ¿Por qué construir con paquetes de tiempo de ejecución hace que el archivo EXE sea más pequeño?
- 29. XE2 exe y la ubicación DCU
- 30. Ejecute .NET exe en Linux
No solo módulos completos. El smartlinker puede cortar funciones y procedimientos individuales desde dentro de una unidad si determina que nunca se utilizan. –