Lazarus Faq/it

From Free Pascal wiki
Revision as of 04:33, 31 January 2011 by Kormoran (talk | contribs)
Jump to navigationJump to search

العربية (ar) Deutsch (de) English (en) español (es) français (fr) magyar (hu) italiano (it) 日本語 (ja) 한국어 (ko) português (pt) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN) 中文(台灣)‎ (zh_TW)

Questioni generiche

Perché i file binari generati sono così grandi?

Sono grandi perché includono una grande quantità di informazioni di debug necessarie per l'uso di gdb (GNU Debugger). Il compilatore ha un'opzione (-Xs) che toglie le informazioni di debug dagli eseguibili, ma nelle versioni 2.0.2 e precedenti non funzionava a causa di un bug, che è stato corretto a partire dalla versione 2.0.4 e successive del compilatore FreePascal.

Si può usare il programma "strip" per rimuovere i simboli di debug dagli eseguibili; si trova nella directory lazarus\pp\bin\i386-win32\. Basta dare il comando "strip --strip-all <nome e pathname del vostro eseguibile>" dalla linea di comando. Per rendere ancora più piccolo il vostro eseguibile usate UPX, un ottimo exe packer; non causa overhead di memoria perché usa un algoritmo di decompressione in-place, ed ha una velocità di decompressione veramente buona (~10 MB/sec su un Pentium 133).

Per usare upx date il comando "upx <nome e pathname del vostro eseguibile>" dalla linea di comando. Dopo aver usato entrambi questi programmi su un semplice programma GUI creato con Lazarus si ottiene:

  • ~ 700kb su Linux
  • ~ 420kb su Windows

Una discussione più approfondita dei pro e contro dell'uso di UPX si trova nell'articolo Size Matters.

E' inoltre importante notare che anche un semplice hello world creato con Lazarus include già un gran numero di funzioni, fra le quali:

  • librerie di gestione di XML
  • librerie di gestione immagini per file png, xpm, bmp e ico
  • Praticamente tutti i widget della Lazarus Component Library
  • Tutta la libreria di runtime del Free Pascal

Per cui è sì molto grande, ma include quasi tutto quello che serve a un'applicazione reale che sia un minimo complessa. Gli eseguibili generati da Lazarus sono grandi inizialmente, ma crescono molto poco al crescere della complessità dell'applicazione, grazie alle proprietà del Free Pascal e del modo in cui funzionano i form di Lazarus. Un progetto C++ (ma anche in molti altri linguaggi e tool) inizia con dimensioni dell'exe molto piccole, ma che crescono esponenzialmente quando si aggiungono funzionalità realmente utili e non banali.

Lazarus vs cpp.png

Guida rapida alla riduzione della dimensione degli eseguibili generati da Lazarus/FPC (testato con Lazarus 0.9.26)

  • 1. Project|Compiler Options|Code|Smart Linkable (-CX) -> Selezionato
  • 2. Project|Compiler Options|Linking|Debugging| Deselezionare tutto tranne

Strip Symbols From Executable (-Xs) -> Selezionato

  • 3. Project|Compiler Options|Linking|Link Style|Link Smart (-XX) -> Selezionato

La parte più importante sembra essere la 2. Per una semplice applicazione, la dimensione dell'eseguibile dovrebbe ora essere 1-3 MB invece di 15-20 MB. A questo punto potreste provare anche:

  • 4. Project|Compiler Options|Code|Optimizations|smaller rather than faster -> Selezionato (Attenzione: potrebbe penalizzare la velocità di esecuzione)
  • 5. (opzionale) usate UPX <vostro_eseguibile> per comprimere il file binario di un fattore due o tre. (Attenzione: come già detto, ci sono alcuni svantaggi nell'uso di UPX).

Tabella delle dimensioni di una applicazione vuota con varie impostazioni e sistemi operativi

Ho fatto girare i test che ho fatto su Lazarus 0.9.29 con FPC 2.4 (FPC 2.2.4 sotto Windows). Compilatore ottimizzato significa usare i consigli dati qui sopra ma senza usare UPX; Default Lazarus significa usando Lazarus con le impostazioni di default che ha appena installato; LCL senza info di debug significa dopo aver ricompilato la LCL e la IDE di Lazarus senza le informazioni di debug (-g-).

    Lazarus base     LCL without debug informations
Ubuntu 64 bit / Lazarus 64 bit
Applicazione vuota     13,4  Mb     7,5 Mb / 8
Compilatore ottimizzato     4,4 Mb     2,70 Mb (0.29svn FPC2.4 2,5)
   
Ubuntu 32 bit / Lazarus 32 bit
Applicazione vuota     19,6  Mb     5,7 Mb
Compilatore ottimizzato     2,9 Mb     1,6 Mb
   
Windows XP 32 bit / Lazarus 32 bit
Applicazione vuota     11,8 Mb     2,14 Mb
Compilatore ottimizzato     1,62 Mb     1,50 Mb
   
Windows Seven 64 bit / Lazarus 64 bit
Applicazione vuota     12,3  Mb     3,20 Mb
Compilatore ottimizzato     2,14 Mb     2,16 Mb