Ergebnis 1 bis 2 von 2
  1. #1
    W32.FunLove
    Registriert seit
    30.10.2008
    Beiträge
    126

    Standard [Lazarus] Warum ist die EXE so groß

    Hi,
    könnt ihr mir sagen warum ein Programm das unter delphi (Mit den gleiche Funktionen) 500 KB groß ist. Unter LAzarus 17MB groß ist?

  2. #2
    is a Grammar Nazi Avatar von Hamtaro
    Registriert seit
    05.06.2007
    Beiträge
    431

    Standard

    Warum sind die generierten Binaries so groß?

    Die Binaries sind groß, weil sie eine Menge Debug-Informationen enthalten, die für die Verwendung von gdb (GNU Debugger) notwendig sind.
    Der Compiler bietet eine Option, die Debug-Informationen aus dem Executable zu entfernen (-Xs), aber wegen eines Bugs im Compiler (Version 2.0.2 und früher), funktioniert es nicht korrekt. In Version 2.0.4 und in der Entwicklerversion des Compilers wurde dies bereinigt. Prüfen sie bei den Compilereinstellungen auch, ob 'Zeilennummern in Laufzeit-Backtraces anzeigen' und 'Smart Linken' aktiviert sind und ändern sie ggf. die Einstellungen.
    Sie können ein Programm genannt "strip" verwenden, um die Debug-Symbole aus dem Executable zu entfernen. In Windows befindet es sich im Lazarusverzeichnis "lazarus\fpc\fpcversion\bin\i386-win32\." unter Linux lässt es sich direkt von der Komandozeile aus starten.
    Tippen sie einfach "strip --strip-all <ihr Executable mit Pfad>" auf der Kommandozeile.
    Wenn sie ihr Programm noch kleiner machen wollen, sollten sie auch UPX ([1]) versuchen. UPX ist ein sehr gutes Programm zur Komprimierung ausführbarer (Binär-)Dateien. UPX beansprucht nur wenig zusätzlichen Speicher während der Dekompression, welche außerordentlich schnell von statten geht (~10 MB/sec auf einem Pentium 133). Man braucht also nicht zu befürchten, durch die Verwendung von UPX erwähnenswerte Nachteile zu haben.
    Um UPX zu verwenden, tippen sie einfach "upx <ihre ausführbare Datei mit Pfad>" in die Kommandozeile.
    Nach der Verwendung von strip und UPX erreicht ein einfaches GUI Lazarus Programm:

    • ~ 700kb unter Linux
    • ~ 420kb unter Windows

    Eine detailliertere Antwort wird auf Size Matters gegeben.
    Hinsichtlich der Größe der Lazarus-Anwendungen ist es außerdem wichtig anzumerken, dass selbst ein simples "Hello World"-Programm bereits eine Vielzahl an Fähigkeiten beinhaltet. Im Einzelnen:

    • Eine Bibliothek zur Handhabe von XML
    • Bibliotheken, um mit Bildformaten wie png, xpm, bmp und ico umzugehen
    • Die ganze Bandbreite der Lazarus Komponenten-Bibliothek (LCL)
    • Die komplette Free Pascal Laufzeitumgebung (RTL)

    Man muss bei der Größe der ausführbaren Datei also berücksichtigen, dass ein einfaches Lazarus-Programm alle Fähigkeiten "beinhaltet", die von einem komplexen und nichttrivialen Programm in Anspruch genommen werden können.
    Mit wachsender Komplexität wächst die Größe der Lazarus-Anwendungen sehr langsam. Verglichen mit anderen Compilern und/oder Programmiersprachen erscheinen somit kleinere Programme (etwa Hello-World-Programme) als lazaruscompilierte-Anwendungen größer - bei Programmen zunehmender Komplexität jedoch meist kleiner. Dieser Umstand begründet sich in der Art und Weise, wie der FreePascal-Compiler den Quelltext in Maschinensprache übersetzt.
    siehe hier: http://wiki.lazarus.freepascal.org/L...o_gro.C3.9F.3F
    gruß
    Sunshine, hurricane
    All the highs & lows

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •