Den genannten Artikel habe ich nur überflogen. Er hat 10 Jahre auf dem Buckel und dürfte in den Details nicht mehr aktuell sein.
Die Dateigröße rührt davon her, dass Lazarus die vom Debugger benötigten Information standardmäßig mit in die Exe einbindet. Es gibt zwei Möglichkeiten, das zu verhindern (Beschreibung für Laz 1.8.4 - die kann sich von Version zu Version ändern, bleibt aber sinngemäß richtig):
- Debugger komplett ausschalten: Menü "Projekt" > "Projekteinstellungen" > "Debuggen" - das Häkchen vor "Debugger-Informationen für GDB erzeugen" entfernen.
- Natürlich kann man dann den Debugger nicht mehr benutzen. Daher ist es sinnvoller, die Debugger-Informationen in eine Datei auszulagern: auf derselben Seite in den Projekteinstellungen das Häkchen vor "Externe Datei mit gdb-Debugsymbolen nutzen" setzen (natürlich muss dann "Debugger-Informationen für GDB erzeugen" wieder eingeschaltet sein).
Mit jeder der beiden Maßnahmen nimmt die Dateigröße eines wie von dir beschriebenen Projekts von etwa 16MB auf 2 MB ab.
Lass die Finger vom Smart-Linking, das kann die Arbeit des Debuggers erschweren (und der ist eh ne Nummer für sich).
Lass die Finger auch von UPX, dein Programm ist damit für den Virenscanner ein "Gefährder".
Du kannst auch mit den "Build-Modes" arbeiten. Die Idee ist hier: während du an dem Programm arbeitest, nimmst du den "Debug"-Modus mit vielen Prüf-Einstellungen, für das fertige Programm schaltest du auf den "Release"-Modus. Auf der Seite "Compilereinstellungen" der Projekteinstellungen ist oben die Checkbox "Erstellmodi", auf den Button "..." klicken und dann auf "Create build and release modes". Alle Änderungen, die du auf den Seiten der "Compilereinstellungen" machst, werden dann dem aktiven Erstell-Modus zugeordnet. Um schnell zwischen den einzelnen Modi umzuschalten, gibt es den dritten Schalter in der 2.Toolbarzeile (blaues Zahnrad mit Schraubschlüssel).
Ein Hinweis noch: Der "Debug"-Modus aktiviert standardmäßig die Speicherleckprüfung mit HeapTrace, was zumindest bei Windows nervt, weil beim Programmende jedesmal ein Fenster über die gefundenen oder nicht gefundenen Lecks erscheint. Daher mache ich mir in dem Erstell-Modi-Dialog einen eigenen Modus "Debug ohne HeapTrace": Die Zeile "Debug" anwählen, "+" klicken, den neuen Modus anwählen und entsprechend umbenennen. Wenn man dann, wenn der neue Modus aktiv ist, auf der Seite "Compilereinstellungen" > "Debuggen" das Häkchen vor "Heaptrc-Unit verwenden" entfernt, bleibt die HeapTrace-Meldung bei diesem Erstellmodus weg.