[Subject Prev][Subject Next][Thread Prev][Thread Next][Subject Index][Thread Index]
Re: can anyone pls explain -fPIC option?
On Sat, Nov 25, 2000 at 11:49:44AM -0500, kamesh jayachandran wrote:
> I have seen an option -fPIC while compiling some programs using gcc.I
> refered the man pages,but could not understand the meaning.Can anyone
> explain abt that to me?
gcc doesn't have everything in man pages. Look in gcc.info:
`-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 16k on the m88k, 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, m88k, and the Sparc.
Position-independent code requires special support, and therefore
works only on certain machines.
-Arun