gcc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Mon, 14 Feb 2011 01:09:30 +0200
changeset 805 eeb94c46c797
parent 352 2f4c25b2b493
child 813 34a39aae2618
permissions -rw-r--r--
Default search path.
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
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    53
  $ ld --verbose | grep SEARCH_DIR
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    54
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    55
'LIBRARY_PATH' and 'LD_LIBRARY_PATH'
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    56
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    57
  $ cpp -Wp,-v
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    58
  $ cpp -Wp,-lang-c++,-v
eeb94c46c797 Default search path.
Oleksandr Gavenko <gavenkoa@gmail.com>
parents: 352
diff changeset
    59
  $ cpp -x c++ -Wp,-v