konto usunięte

Temat: Lazarus, a wielkość pliku exe

Witam,

powtarzając sobie proste rzeczy w delphi korzystając z Lazarus natrafiłem na coś co mnie zdziwiło. Mianowicie...
"Napisałem program" (bo to programem się nie da nazwać:)) zegar. Czyli label, timer i jedna linijka kodu. Wszystko fajnie pięknie. Coś mnie podkusiło by sprawdzić ile ten mój "Program" zajmuje miejsca na dysku i tu był SZOK. Zegar zajmuje 15 MB!!! Tu rodzi mi się pytanie dlaczego ten program jest taki DUŻY? Jak pamięta z delphi 7 to nie zajmowało niewiele miejsca, chodź i tak za dużo. Co może być przyczyną i jak to poprawić?

konto usunięte

Temat: Lazarus, a wielkość pliku exe

Plik jest tak duży bo dodawane są informacje dla debuggera. Żeby mieć mniejszy rozmiar pliku jest 2 opcje:

1. W ustawieniach projektu ustawić żeby używało zewnętrznego pliku odpluskwiacza, wówczas obok zegar.exe będzie wygenerowany plik zegar.dbg
2. Użyć polecenia: strip.exe --strip-all zegar.exe

Strip.exe powinno być (jeśli Lazarus jest zainstalowany w C:\Lazarus a używa np. FPC 2.6.0)

C:\Lazarus\fpc\2.6.0\bin\i386-win32

I tam powinien być strip.exe, zakładając że Lazarus jest dla Win32.

Można dodatkowo użyć programu upx, by jeszcze bardziej zmniejszyć rozmiar pliku zegar.exe (jeśli projekt jest tak nazwany i taki jest plik wynikowy), po użyciu strip rozmiar pliku pewnie wyniesie jakieś 1,2 MB, po kompresji UPX pewnie ok. 500 kb.Ten post został edytowany przez Autora dnia 23.03.14 o godzinie 14:26

konto usunięte

Temat: Lazarus, a wielkość pliku exe

Bardzo dziękuje za informację:)
Zrobiłem tak jak napisałeś z 15 MB zeszło do 2 MB lepiej, aczkolwiek i tak uważam że to jest duży plik :)

konto usunięte

Temat: Lazarus, a wielkość pliku exe

Chyba istotne jest to co dołącza w uses:


uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs, StdCtrls;


czego bym się spodziewał pisząc taki prosty zegar.

Czyli głównie chodzi mi o:
Forms, Controls, Graphics, Dialogs, StdCtrls,

Po kompresji za pomocą upx, tej najlepszej, program który zajmował 1,5 MB (informacje dla debugera w pliku DBG jakieś 13 MB)


upx -9 --compress-icons=0 moj_program.exe


zajmuje ok. 500 kb.

Natomiast nie wiem czy jest sens tworzyć pliki exe, skompresowane za pomocą tego programu przy dzisiejszych komputerach, które mają spokojnie co najmniej 200 GB na dysku. Kiedyś bawiłem się z UPX, kompresując jeszcze i pliki DLL, oczywiście oprogramowanie zajmowało mniej ale były z tym problemy. Zresztą kompresja systemowych DLL chyba nie jest zalecana.
Damian Woroch

Damian Woroch programista Object
Pascal

Temat: Lazarus, a wielkość pliku exe

Nie polecam jakiejkolwiek kompresji plików wykonywalnych, może się to skończyć na false positive oprogramowania antywirusowego, a tego byśmy nie chcieli przy dystrybucji naszych programów

Następna dyskusja:

program w jednym pliku exe ...




Wyślij zaproszenie do