gcc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 30 Jan 2017 00:44:30 +0200
changeset 2075 ccaa2f364422
parent 1912 8b81a8f0f692
child 2228 837f1337c59b
permissions -rw-r--r--
Improve page formatting.

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

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