lazarus linux=> ausführbare datei zu groß

Für Fragen rund um die Ide und zum Debugger
Oswin
Beiträge: 10
Registriert: Di 22. Mai 2007, 18:12

lazarus linux=> ausführbare datei zu groß

Beitrag von Oswin »

moin ich hab ein einfaches programm unter linux geschrieben mein projekt auf gtk2 umgestellt und nun hab ich dateien die vieeeeel zu groß sind (7mb) ichweis auch nicht wie ich das ändern kann debuginfos hatte ich in den compiliereinstellungen ausgeschaltet zumindest das was ich gefunden habe.. :(

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 »

Das auschalten der Debuginfos in den Compilereinstellungen funktioniert nicht. Macht auch wenig sinn denn dann kannst du ja nicht mehr Debuggen.

"strip meinexecutable"

entfernt dir die Debugsymbole.

Und warum jammerst du über 7mb ?
Wegen der 640 kb Grenze im Hauptspeicher ?
Oder weil du dann nur 2 Programme auf deine 20 mb Festplatte bekommst ??
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 »

achja und upx nicht vergessen:
upx Programmname....

Naja, es ist schon verwunderlich ! Bei Delphi Klappt das Debuggen ja auch, und die Anwendung sind auch nicht gleich 7 MB groß !
MFG
Michael Springwald

creed steiger
Beiträge: 958
Registriert: Mo 11. Sep 2006, 22:56

Beitrag von creed steiger »

pluto hat geschrieben: Naja, es ist schon verwunderlich ! Bei Delphi Klappt das Debuggen ja auch, und die Anwendung sind auch nicht gleich 7 MB groß !
Naja... mancher vergisst leicht:
Lazarus ist nicht Delphi. :D

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, da hast du auch wieder recht !
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 »

Delphi benutzt auch kein freies Debugformat. Bei Lazarus executables kannst jeden beliebigen debugger zum debuggen nehmen versuch das mal mit ner Delphi Applikation.
Und UPX würd ich hier nicht immer anführen das hat nichts mit der Grösse zu tun. Delphi Executables kannst auch packen.
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 »

Naja, bei DelphiX Spiele hatte ich mal Probleme wegen UPX... Da habe ich einfach die Packrate verändert und es klappt !
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 »

Ja, hier ist auch scheiß Wetter.
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 »

Bei mir nicht *G*
Nagut zwischen durch. mit meinem Letzten Beitrag wollte ich ja nur sagen: man kann die Packrate anpassen. Somit kann ich jede Datei EXE Datei Packen.

Weil bei spielen kann das schonmal etwas ruckeln.... Wenn die Datei gepackt ist !
MFG
Michael Springwald

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Code: Alles auswählen

user@linux:~$ strip meinBinary
Hilft also. Gut, dann wäre das ja in Ordung.
Trotzdem noch eine Frage:
kann es nicht auch sein, dass benötigte Libs oder Teile davon (wie auch immer, das ist für mich Neuland) mit in die Binary includiert werden. Das heißt dann doch "statisch linken", oder? Und wenn ja - würde es dann nicht (theoretisch) gegen GPL verstossen? Also kann es doch wieder nicht sein, dass GTK2-Libs da mitreinkompiliert werden. Oder stehe ich jetzt daneben?

Reicht "strip" schon völlig aus? Ich habe gerade versucht, die manpages von strip zu lesen, leider ist die Beschreibung für einen Laien wie mich wenig hilfreich. :oops:

Könnte bitte ein Wissender Licht in meinen Geist bringen und das erklären, wie denn "remove symbols from files" genau funktioniert, oder was da geschieht?
Danke!

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 »

soweit ich weiß, werden nur Debugg-Infos Entfernt, mehr nicht:
http://wiki.lazarus.freepascal.org/Size_Matters/de" onclick="window.open(this.href);return false;
MFG
Michael Springwald

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 »

Hallo Leute!
bembulak hat geschrieben:kann es nicht auch sein, dass benötigte Libs oder Teile davon (wie auch immer, das ist für mich Neuland) mit in die Binary includiert werden. Das heißt dann doch "statisch linken", oder? Und wenn ja - würde es dann nicht (theoretisch) gegen GPL verstossen?
Das ist eine gute Frage! Hier die Antwort:

Betreffende Teile stehen unter der LGPL. Die ist wesentlich lockerer gefasst als die GPL...
Reicht "strip" schon völlig aus? Ich habe gerade versucht, die manpages von strip zu lesen, leider ist die Beschreibung für einen Laien wie mich wenig hilfreich. :oops:
Strip sollte mit der Option --strip-all gestartet werden. siehe unten.
Könnte bitte ein Wissender Licht in meinen Geist bringen und das erklären, wie denn "remove symbols from files" genau funktioniert, oder was da geschieht?
Danke!
Genau kann ich dir das nicht erklären. Es ist wohl so, dass, wenn man ein Programm debuggen will, zusätzliche Informationen in die Binärdateien geschrieben werden (wo der Fehler auftritt, in welcher Unit, welcher Zeile u.s.w. ist ja von Interesse).
Diese Informationen sind recht reichhaltig - daher sind die Binärdateien recht groß. Mit strip kann man die Informationen dann entfernen.



Hier die Schritt-für-Schritt-Anleitung für strip unter Linux - unter Windows ähnlich.

1. Konsole starten
2. In das Verzeichnis wechseln, in dem das kompilierte, viel zu große Programm steckt.
3. Nun in die Konsole eingeben:
strip --strip-all Programmname
Es ist dabei unter Linux wichtig, dass zwischen Groß - und Kleinschreibung unterschieden wird. Programmname inklusive Dateiendung, falls vorhanden (unter Windows *.exe).


Mit upx erreicht man dann Dateigrößen unter einem MB.


Viele Grüße,

Alexander

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 »

strip meinexecutable und
strip --strip-all meinexecutable ist exact das gleiche

man kann noch mit strip --strip-debug nur die debugsymbole entfernen
--strip-all entfernt auch ungenutzte sektionen
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

bembulak
Beiträge: 370
Registriert: Di 6. Feb 2007, 09:29
OS, Lazarus, FPC: L0.9.29 SVN:24607 FPC 2.4.0-32 bit @ Win XP SP3
CPU-Target: 32bit i386, ARM
Wohnort: Oberösterreich

Beitrag von bembulak »

Herzlichen Dank für die Aufklärung.
:D

Benutzeravatar
theo
Beiträge: 10856
Registriert: Mo 11. Sep 2006, 19:01

Beitrag von theo »

Kann man sich gleich als externes Werkzeug einrichten.
Bei mir klappt's so (Linux):

Titel: Strip
Programmdateiname: /usr/bin/strip
Parameter: --strip-all $MakeExe($(TargetFile))

Antworten