about -fpic/-fPIC option for gcc

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everyone,


I am confused about the meaning and function of -fpic
and -fPIC option of gcc. I am more confused when after
reading the manual of gcc (for example, what means
PIC, GOT, constant addresses, etc.). Could anyone
explain to me what are their functions in easy to
understand words?

Here are the descriptions from gcc manual, which makes
me confused. :-)

--------------------
-fpic Generate position-independent code (PIC)
suitable for use in a shared library,
if supported for the target machine. Such code
accesses all constant addresses
through a global offset table (GOT). The dynamic
loader resolves the GOT
entries when the program starts (the dynamic loader is
not part of GCC; it
is part of the operating system). If the GOT size for
the linked executable
exceeds a machine-specific maximum size, you get an
error message from the
linker indicating that ?-fpic? does not work; in that
case, recompile with ?-fPIC?
instead. (These maximums are 8k on the SPARC and 32k
on the m68k and
RS/6000. The 386 has no such limit.)
Position-independent code requires special support,
and therefore works only on
certain machines. For the 386, GCC supports PIC for
System V but not for the
Sun 386i. Code generated for the IBM RS/6000 is always
position-independent.

-fPIC If supported for the target machine, emit
position-independent code, suitable
for dynamic linking and avoiding any limit on the size
of the global offset table.
This option makes a difference on the m68k, PowerPC
and SPARC.
Chapter 3: GCC Command Options 193
Position-independent code requires special support,
and therefore works only
on certain machines.
--------------------


thanks in advance,
George

__________________________________________________
Do You Yahoo!?
Tired of spam?  Yahoo! Mail has the best spam protection around 
http://mail.yahoo.com 

[Index of Archives]     [Linux C Programming]     [Linux Kernel]     [eCos]     [Fedora Development]     [Fedora Announce]     [Autoconf]     [The DWARVES Debugging Tools]     [Yosemite Campsites]     [Yosemite News]     [Linux GCC]

  Powered by Linux