binary-size.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 22 Feb 2016 12:41:52 +0200
changeset 1903 901e7394849f
parent 1894 2e3bc2435d68
child 1905 fba288d59662
permissions -rw-r--r--
Decrease intent to increase space usage on mobile.

.. -*- coding: utf-8; -*-
.. include:: HEADER.rst

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

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.