FPC 2.1 Sprunghafter Größenanstieg

Für Fragen rund um die Ide und zum Debugger
Antworten
monta
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

Beitrag von monta »

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?

Christian
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:

Beitrag von Christian »

also bei mir haben sich die executable grössen vom fpc 2.0.4 zu 2.1.1 fast halbiert dank dem internen linker
hab vorgestern erst auf arbeit n executable neucompiliert was damals 3 mb hatte und jetzt 1.4 mb
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
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:

Beitrag von monta »

:?:

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?

Christian
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:

Beitrag von Christian »

Muss man das Smartlinking irgendwo gesondert aktivieren, außer in den Prjekteinstellungen?
Ja natürlich die rtl,fcl und lcl müssen mit -CX compiliert werden und dann natürlich in den projekteinstellungen noch angeschaltet

http://wiki.lazarus.freepascal.org/Size_Matters
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

pluto
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)

Beitrag von pluto »

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 !
MFG
Michael Springwald

Christian
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:

Beitrag von Christian »

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 ?
ü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.
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
und wenn ich sie dann packe müsten sie doch um einiges kleiner werden als wenn ich die 11 MB dateien packe !
ist das ne ernstgemeinte frage ?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

monta
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:

Beitrag von monta »

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
Der Link ist gut, danke.
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?

Christian
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:

Beitrag von Christian »

beides zuerst am besten den gesamten fpc neu compilieren mit -CX also
make install OPT="-CX"

und dann lanzarus in den make lazarus einstellungen kannst ja zusätzliche parameter angeben
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Euklid
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:

Beitrag von Euklid »

pluto hat geschrieben:kann man die debug infos nicht von vorrne rein raußnehmen wie in delphi ?
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
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)

Beitrag von pluto »

ja das habe ich gesehen *G* warum können die infos nicht extern gespeichert werden ?
MFG
Michael Springwald

monta
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:

Beitrag von monta »

pluto hat geschrieben:ja das habe ich gesehen *G* warum können die infos nicht extern gespeichert werden ?
vermutlich, weil man dann erstmal den gnu-Debugger umschreiben müsste ;)

Euklid
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:

Beitrag von Euklid »

Ich glaube, das FPC-Projekt entwickelt auf kurz oder lang sowieso einen internen Debugger...

Christian
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:

Beitrag von Christian »

Stimmt, macht aber nicht das fpc projekt sondern das Lazarus team. Liegt im Ordner WinDbg in eurer Lazarus installation wer mal spielen will ist aber noch nicht so wahnsinnig weit fortgeschritten.
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

Antworten