gcc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 22 Feb 2016 12:46:36 +0200
changeset 1905 fba288d59662
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

=====
 GCC
=====
.. contents::
   :local:

Remove dead code
================

  STRIP_DEAD_CODE = -Wl,-static -fvtable-gc -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-s

  -Wl,-static
                Link against static libraries. Required for dead-code
                elimination.

  -fvtable-gc
                C++ virtual method table instrumented with garbage collection
                information for the linker.

  -fdata-sections
                Keeps data in separate data sections, so they can be discarded
                if unused.

  -ffunction-sections
                Keeps funcitons in separate data sections, so they can be
                discarded if unused.

  -Wl,--gc-sections
                Tell the linker to garbage collect and discard unused
                sections.

  -s
                Strip the debug information, so as to make the code as small
                as possible. (I presume that you'd want to do this in a
                dead-code removal build.)

Map file
========
::

  $ ld -Map=file.map <opts> <files>

or::

  $ gcc -Wl,-Map=file.map <opts> <files>

Predefined macros
=================
::

  $ gcc -arch ppc -dM -E - < /dev/null | sort

Default search path
===================

  $ echo | gcc -v -x c -E -

  $ gcc -print-search-dirs
  install: ...
  programs: ...
  libraries: ...

Use -### in actual invoking::

  $ gcc -### -o foo foo.c

  $ ld --verbose | grep SEARCH_DIR

``LIBRARY_PATH`` and ``LD_LIBRARY_PATH``::

  $ cpp -Wp,-v
  $ cpp -Wp,-lang-c++,-v
  $ cpp -x c++ -Wp,-v