Results 1 to 13 of 13

Thread: FPC en exe size

  1. #1

    FPC en exe size

    Een standaard form met 1 button die een ShowMessage doet levert een exe op van ruim 13 MB. Hoe is dit kleiner te krijgen zonder gebruik van packers/compressors?

    Strips Symbols en Smart Linking opties staan al aangevinkt.

  2. #2
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Dan gaat er wat fout met strippen. Het hoort 1.5-2 MB te zijn, of minder.

    Probeer eens handmatig strip <file>

  3. #3
    Hoort er een strip.exe bij FPC of Lazarus of bedoel je om de relocations handmatig te strippen?

  4. #4
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Ja, er zit een strip bij FPC, en hopelijk ook in de FPC directory van lazarus.

    Sommige versies van GNU LD kunnen ook strippen, maar negeren de strip optie als ze het niet kunnen.

  5. #5
    Bij de lazarus distributie (x64) zit geen strip.exe, bij die van FPC ook niet. Bij de FPC voor win32 wel (fpc-2.2.4.i386-win32.exe) maar die kan geen x64 exe verwerken (foutmelding: File format not recognized).

  6. #6
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    FPC haalt zijn binutils binaries uit mingw32 resp mingw64.

    Rond zoekende, vond ik een snapshot, waar ik de volgende files uit gehaald heb:

    http://www.stack.nl/~marcov/mingw64-nov2008.zip

  7. #7
    OK, als ik deze strip gebruik blijft er 2,4 MB over (dat is iig behoorlijk kleiner).

  8. #8
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Ooh, sorry, de waarden die ik noemde zijn voor 32-bit. 64-bit is natuurlijk altijd wat groter

  9. #9
    OK, is het normaal dan de bedoeling dat FPC de strip.exe aanroept na compilatie?

  10. #10
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Klassiek moest de linker het doen. Toen die af en toe niet werkte, is dat misschien veranderd.

    Maar goed, het belangrijke punt is het begrijpen van de filosofie. De ongestripte binary hou je typisch zelf, de gestripte binary gaat naar de klant.

    FPC/gcc binaries met debug info zijn ongeveer hetzelfde als Delphi binaries met het "TD32" vinkje aan.

    Het verschil is dat je door strip niet twee keer hoeft te bouwen. De debug info wordt uit de debug build gehaald, maar de build is exact hetzelfde. (debug info segmenten worden normaal niet eens geladen).

    De versie met debug kan je behouden om adressen naar symbolen te veranderen (als een soort gigantische map file), remote debugging enz.

    Sommige van deze mogelijkheden zijn (nog) niet even praktisch, vooral op windows, maar dit is de gedachte achter strip.

    Het simpelste is natuurlijk de debug info niet genereren als je hem niet nodig hebt.

  11. #11
    Je moet ook debug informatie uitschakelen, anders wordt -Xs genegeerd door de compiler.

  12. #12
    Senior Member
    Join Date
    Jan 2002
    Location
    Nieuwlande, Nederland
    Posts
    612
    Op Linux zie ik ruim 40 mb voor een dergelijke test. Welke aanpak moet ik daar kiezen en wat blijft er dan van mijn exe over?

  13. #13
    mov rax,marcov; push rax marcov's Avatar
    Join Date
    Apr 2004
    Location
    Ehv, Nl
    Posts
    10,357
    Zelfde, debug info uitzetten en -Xs (strip symbols) aan.

    Indien dat niet werkt, handmatig strippen met "strip <file>" op de commandline

Thread Information

Users Browsing this Thread

There are currently 1 users browsing this thread. (0 members and 1 guests)

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •