gcc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sun, 03 Jan 2021 23:37:00 +0200
changeset 2492 bd3d45148652
parent 2230 9e6ad6607a9e
child 2548 96bfe9c31ab8
permissions -rw-r--r--
Fixed example.

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