gcc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Sun, 01 Jul 2012 15:55:50 +0300
changeset 1314 b057128c56ff
parent 813 34a39aae2618
permissions -rw-r--r--
Severity levels in Debian project.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
194
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     1
-*- mode: outline; coding: utf-8 -*-
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     2
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     3
* Remove dead code.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     4
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     5
  STRIP_DEAD_CODE = -Wl,-static -fvtable-gc -fdata-sections -ffunction-sections -Wl,--gc-sections -Wl,-s
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     6
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     7
  -Wl,-static
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     8
                Link against static libraries. Required for dead-code
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
     9
                elimination.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    10
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    11
  -fvtable-gc
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    12
                C++ virtual method table instrumented with garbage collection
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    13
                information for the linker.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    14
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    15
  -fdata-sections
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    16
                Keeps data in separate data sections, so they can be discarded
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    17
                if unused.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    18
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    19
  -ffunction-sections
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    20
                Keeps funcitons in separate data sections, so they can be
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    21
                discarded if unused.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    22
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    23
  -Wl,--gc-sections
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    24
                Tell the linker to garbage collect and discard unused
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    25
                sections.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    26
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    27
  -s
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    28
                Strip the debug information, so as to make the code as small
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    29
                as possible. (I presume that you'd want to do this in a
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    30
                dead-code removal build.)
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    31
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    32
* Map file.
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    33
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    34
  $ ld -Map=file.map <opts> <files>
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    35
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    36
or
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    37
c9a5f5dad40d Map file.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 193
diff changeset
    38
  $ gcc -Wl,-Map=file.map <opts> <files>
352
2f4c25b2b493 Predefined macros.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 194
diff changeset
    39
2f4c25b2b493 Predefined macros.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 194
diff changeset
    40
* Predefined macros.
2f4c25b2b493 Predefined macros.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 194
diff changeset
    41
2f4c25b2b493 Predefined macros.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 194
diff changeset
    42
  $ gcc -arch ppc -dM -E - < /dev/null | sort
805
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    43
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    44
* Default search path.
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    45
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    46
  $ echo | gcc -v -x c -E -
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    47
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    48
  $ gcc -print-search-dirs
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    49
install: ...
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    50
programs: ...
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    51
libraries: ...
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    52
813
34a39aae2618 Use -###.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 805
diff changeset
    53
Use -### in actual invoking:
34a39aae2618 Use -###.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 805
diff changeset
    54
34a39aae2618 Use -###.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 805
diff changeset
    55
  $ gcc -### -o foo foo.c
34a39aae2618 Use -###.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 805
diff changeset
    56
805
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    57
  $ ld --verbose | grep SEARCH_DIR
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    58
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    59
'LIBRARY_PATH' and 'LD_LIBRARY_PATH'
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    60
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    61
  $ cpp -Wp,-v
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    62
  $ cpp -Wp,-lang-c++,-v
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    63
  $ cpp -x c++ -Wp,-v