binary-size.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 26 Jun 2017 18:32:03 +0300
changeset 2152 a48ba30d5b20
parent 1912 8b81a8f0f692
permissions -rw-r--r--
Fixed example for done changes review.

.. -*- coding: utf-8; -*-

===========================
 Reducing binary code size
===========================
.. contents::
   :local:

Common receipt
==============

Configure build with disabling unused features e.g.::

  $ ./configure --without-png

Link dynamically instead statically (on your platform shared library may be
already present).

Avoid debug build. Make release/final build instead debug.

Use packers. Packer compress binary so binary smaller. When program load
decompress itself, so startup time increase.

Binary packers::

  http://upx.sourceforge.net
    Home page.

GCC
======

Use ``-Os`` when produces ``*.o`` files.

Use ``-s`` when produces executable. And ``--remove-section=.comment`` and
``--remove-section=.note"``.

Use::

  $ strip --strip-all <executable>

and::

  $ gcc -ffunction-sections -fdata-sections -c -o my.o my.c
  $ gcc -Wl,--gc-sections -o my my.o

MSVC
====

Use ``/Os`` when produces ``*.obj`` files.