c++cgccfpic

What does -fPIC mean when building a shared library?


I know the '-fPIC' option has something to do with resolving addresses and independence between individual modules, but I'm not sure what it really means. Can you explain?


Solution

  • PIC stands for Position Independent Code.

    To quote man gcc:

    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 AArch64, m68k, PowerPC and SPARC.

    Use this when building shared objects (*.so) on those mentioned architectures.