
Lazarus - exe obluda
Zdravím.
Dam nový projekt, uložít a sestavit.
Uděla mi to skoro 20 MB exe obludu.
Kde je problem?
Zdravím.
Dam nový projekt, uložít a sestavit.
Uděla mi to skoro 20 MB exe obludu.
Kde je problem?
Zpět do poradny Odpovědět na původní otázku Nahoru
Jsem zkoušel upavit ten fpc.cfg a menší o pul mega
co presne si upravil?
Generujes release a ne debug exe? (snad to tam ma na to nastavenie v projekte)
Skusal si ten strip YourProject.exe
Presne to bude ten problem - Debug a Release nastaveni vysledne verze.
S Delphi je to podobne, debug verze obsahuje spoustu debug informaci, ale neni to tak velky narust jako u Lazara.
A preco pouzivas hovadiny, pouzi ciste c++ a budes mat 32kB exe. Visual C bolo aj zdarma.
P.S. ja osobne vo VC++ nastavujem linkeru nech pouziva staticaly linked library lebo ked tam nastavis dynamicaly linked dll, tak budes potrebovat nainstalene prislusne visual C runtime k tomu exe
P.S.2. ale vyhoda externeho runtime je ze sa to moze zaplatovat nezavisle, takze niekedy je lepsie to nechat tak a nainstalit visual c runtime.
Pokud ti nevadi, ze pak budes mit v systemu 5+ verzi C++ Runtime, k tomu x verzi .NET runtime...
Osobne mam radeji nekolika MB EXE, ktery muzu vzit kamkoliv, spustit a vim ze pobezi nez 32kB EXE, ke kteremu musim doinstalovat desítky MB runtime.
Tak viem urobit aj 32kB bez runtime:)
Samozrejme, ze to jde, pokud delas nejakou drobnost, kterou neplanujes nejak moc do budoucna rozvijet.
Size_Matters
To compile your application in this way, you should use the -Xg switch or corresponding the Lazarus GUI option: Project|Compiler Options|Linking|Debugging|Leave generating debugging info enabled and enable use External gdb debug symbols.
S 20 MB obludy je hned 2,39 MB což by už šlo
Když však vypvořím nový projekt, je to zas přeple.
Neda se to někde přepsat natvrdo?
Co ten fpc.cfg ?
Nehodil by tu někdo upravený?
To tam fakt rovno pred ocami nemas nejake velke tlacitko na vyber release/debug buildu? Ono to ma zmysel mat to tak jak to je prednastavene a vyberat si to co prave potrebujem, ak to tam je. Ak neni tak to je dementne gui.
Takto to robi clovek
http://wiki.freepascal.org/IDE_Window:_Compiler_Op tions#Adding_a_release_and_debug_build_modes
OT: nešlo by pro následné zmenšení *exe v tomto případě použít UPX? upx.github.io
Tohle bych nedělal. V dnešní době paranoidních antivirů si tím jen přiděláváš problémy.
Navíc UPX má negativum. Normálně, když EXE spustíš, tak se ti z něj do paměti natáhne jen to, co je potřeba. V případě UPX musíš EXE do paměti rozpakovat celé.
Aha, díky za info, já s tím mám akorát opačné zkušenosti, když jsem se potřebovat dostat k resourcům a musel jsem *exe odúpéiksovat a tedy zvětšit :)
Jasne, protoze to je zpakovane, takze nejprve z toho udelat normalni EXE a pak editovat resource.
UPX se pouzival v dobach disket, kdys potreboval, aby se ti vlezlo na disketu vic utilit. V dnesni dobe nevidim duvod.
doporučji použít strip.exe - najdeš ho v adresáři lazarusu
c:\lazarus\fpc\3.0.2\bin\i386-win32\strip.exe
Zmenšení výsledné aplikace v Lazarusu jde velmi snadno až 26x, nebo na 3,8% původní velikosti, tj. z 22 MB to udělá 0,75 MB! Nejlepší způsob je nastavit to v grafickém prostředí. O něco horší postup je použití strip a pak upx. Podrobné a názorné informace jak zmenšit kód v LAZARUS 1.6.4.
Komprimátory jako UPX bych dnes už nepoužíval. Mají jednu obrovskou nevýhodu, pokud pominu to, že jsou často takto komprimované programy detekovány jako škodlivý kód.
Normální program se do paměti nenahraje celý, je jen jeho potřebná část. Pak se dotahuje jen, co je třeba.
Pokud použiješ UPX, musí se program do paměti rozbalit, abys ho mohl spustit, takže ve výsledku zabere mnohem víc operační paměti než nezpakovaný program. Úspora je pouze místo na disku.
Po více než roce už to tazatel asi vyřešil.
Hlavní problém je v tom, že Lazarus neumí dynamické knihovny (jako u Delpji *.BPL), vše je staticky přilinkované. Netřeba se děsit, jak budeš zvětšovat (zdrojový) program, pak již bude runtime narůstat jen velmi málo.