gcc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 09 Oct 2017 10:49:36 +0300
changeset 2188 e95731eef030
parent 1912 8b81a8f0f692
child 2228 837f1337c59b
permissions -rw-r--r--
Fixed: NameError: name 'locale_encoding' is not defined File /bin/rst2html.py, line 17, in <module> from docutils.core import publish_cmdline, default_description File /usr/lib/python2.7/site-packages/docutils/core.py, line 20, in <module> from docutils import frontend, io, utils, readers, writers File /usr/lib/python2.7/site-packages/docutils/frontend.py, line 41, in <module> import docutils.utils File /usr/lib/python2.7/site-packages/docutils/utils/__init__.py, line 20, in <module> import docutils.io File /usr/lib/python2.7/site-packages/docutils/io.py, line 18, in <module> from docutils.utils.error_reporting import locale_encoding, ErrorString, ErrorOutput File /usr/lib/python2.7/site-packages/docutils/utils/error_reporting.py, line 60, in <module> codecs.lookup(locale_encoding or '') # None -> '' NameError: name 'locale_encoding' is not defined

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