FPC 2.1 Sprunghafter Größenanstieg
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
FPC 2.1 Sprunghafter Größenanstieg
Mal eine Frage aus Interesse. der FPC 2.1 optimiert ja angeblich wesentlich besser.
Aber die Größe der Exen niemt ja dabei geradezu sprunghaft zu, wenn man statt der Lazarus 9.20er mit FPC2.0 die 921er mit FPC2.1 einsetzt.
Bei einem Beispielproject von mir im direkten vergleich von 7 auf 11 MB. Da würde mich schon mal interessieren, woran diese Sprunghafte vergrößerung liegt?
An zusätzlichen Debuginformationen kann es ja nun nicht liegen. Weil ein Strip und anschließendes UPX eine Exe erzeugt, die über das doppelte der mit FPC 2.0 erstellten Exe liefert:
FPC2.0: ~7MB > Strip+UPX > ~0,5MB
FPC2.1: ~11MB > Strip+UPX > ~1,4MB
Was macht nun also der FPC2.1 so Grundlegend anders, oder liegt die Änderung auf Seiten von Lazarus?
Aber die Größe der Exen niemt ja dabei geradezu sprunghaft zu, wenn man statt der Lazarus 9.20er mit FPC2.0 die 921er mit FPC2.1 einsetzt.
Bei einem Beispielproject von mir im direkten vergleich von 7 auf 11 MB. Da würde mich schon mal interessieren, woran diese Sprunghafte vergrößerung liegt?
An zusätzlichen Debuginformationen kann es ja nun nicht liegen. Weil ein Strip und anschließendes UPX eine Exe erzeugt, die über das doppelte der mit FPC 2.0 erstellten Exe liefert:
FPC2.0: ~7MB > Strip+UPX > ~0,5MB
FPC2.1: ~11MB > Strip+UPX > ~1,4MB
Was macht nun also der FPC2.1 so Grundlegend anders, oder liegt die Änderung auf Seiten von Lazarus?
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:

So, ich hab es nochmal probiert.
Ich hab Laz 9.20 + FP 2.0 in einem Verzeichnis und in ein neues Verzeichnis hab ich den aktuellen Snapshot installiert, also Laz 9.21 und FPC 2.1
Mein Beispielsprojekt hab ich auch kopiert und jeweils erstellt, und es kommt das selbe raus:
FPC 2.0: 7,4
FPC 2.1: 10,9
allerdings hab ich gerade gemerkt, das die dateinach UPX ind Strip doch kleiner wird. Aber wieso sind sie ohne Nachbehandlung so viel größer? Sind das wirklich 4MB Debuginfos?
Muss man das Smartlinking irgendwo gesondert aktivieren, außer in den Prjekteinstellungen?
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
Ja natürlich die rtl,fcl und lcl müssen mit -CX compiliert werden und dann natürlich in den projekteinstellungen noch angeschaltetMuss man das Smartlinking irgendwo gesondert aktivieren, außer in den Prjekteinstellungen?
http://wiki.lazarus.freepascal.org/Size_Matters
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 7192
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
kann man die debug infos nicht von vorrne rein raußnehmen wie in delphi ?
z.b. wenn ich ein programm veröffentlichen möchte brauche ich diese infos doch garnicht oder ?
und wenn ich sie dann packe müsten sie doch um einiges kleiner werden als wenn ich die 11 MB dateien packe !
z.b. wenn ich ein programm veröffentlichen möchte brauche ich diese infos doch garnicht oder ?
und wenn ich sie dann packe müsten sie doch um einiges kleiner werden als wenn ich die 11 MB dateien packe !
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 6079
- Registriert: Do 21. Sep 2006, 07:51
- OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
- CPU-Target: AVR,ARM,x86(-64)
- Wohnort: Dessau
- Kontaktdaten:
überleg doch mal wie soll das gehen dann kannst deine anwendungen ja nicht mehr debuggen aber ja kannst du in den compilereinstellungen jedenfalls teoretisch hat lange zeit nicht funktioniert weils keinen sinn macht weiss nicht obs mittlerweile geht.kann man die debug infos nicht von vorrne rein raußnehmen wie in delphi ?
z.b. wenn ich ein programm veröffentlichen möchte brauche ich diese infos doch garnicht oder ?
natürlich brauchst du die nicht wenn dus veröffentlichen willst es sei denn du brauchst die stacktraces macht ja auch bei endkunden sinn die werden ja bei exceptions automatisch gelogt
jedenfalls ist es sinnvoller ein extra compilerprofil dafür zu erstellen oder das aus nem script zu erledigen so mach ch das wenn ich ne rpm oder deb generiere wird das executable vorher gestrippt
ist das ne ernstgemeinte frage ?und wenn ich sie dann packe müsten sie doch um einiges kleiner werden als wenn ich die 11 MB dateien packe !
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/
-
- Lazarusforum e. V.
- Beiträge: 2809
- Registriert: Sa 9. Sep 2006, 18:05
- OS, Lazarus, FPC: Linux (L trunk FPC trunk)
- CPU-Target: 64Bit
- Wohnort: Dresden
- Kontaktdaten:
Der Link ist gut, danke.Christian hat geschrieben:Ja natürlich die rtl,fcl und lcl müssen mit -CX compiliert werden und dann natürlich in den projekteinstellungen noch angeschaltet
Aber ich steh trotzdem gerade auf der Leitung...muss ich nicht einfach Lazarus neu erstellen, mit der Einstellung -CX und anschließend beim Projekt SmartLinking aktivieren und fertig?
Oder muss ich irgendwie zusätzlich die fcl über make neu erstellen?
-
- Lazarusforum e. V.
- Beiträge: 2808
- Registriert: Fr 22. Sep 2006, 10:38
- OS, Lazarus, FPC: Lazarus v2.0.10, FPC 3.2.0
- Wohnort: Hessen
- Kontaktdaten:
Zur Zeit verwendet Lazarus den externen GNU-Debugger zum debuggen. Dummerweise hat der die Eigenschaft, die Debuginformationen innerhalb der Binärdatei zu speichern. Die Folge: Die Binärdateien müssen erst von diesen Informationen befreit werden, bevor sie eine akzeptable Größe erreichen.pluto hat geschrieben:kann man die debug infos nicht von vorrne rein raußnehmen wie in delphi ?