`-shared'
Produce a shared object which
can then be linked with other
objects to form an
executable. Not all systems support this
option. For predictable results, you must also
specify the same
set of options that were used to
generate code (`-fpic', `-fPIC',
or model
suboptions) when you specify this option.(1)
gcc manul上面有说 -fpic
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.)
-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.
Position-independent code requires special support, and therefore works only on
certain machines.