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