binary-size.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 22 Feb 2016 12:46:36 +0200
changeset 1905 fba288d59662
parent 1894 2e3bc2435d68
child 1912 8b81a8f0f692
permissions -rw-r--r--
Include only local subsections into TOC. This prevent duplication of TOC when build single page HTML document. Also this make unnecessary CSS hack to hide document title as top level section.

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

===========================
 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.