What does -fPIC mean when building a shared library?

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 … Read more

GCC -fPIC option

Position Independent Code means that the generated machine code is not dependent on being located at a specific address in order to work. E.g. jumps would be generated as relative rather than absolute. Pseudo-assembly: PIC: This would work whether the code was at address 100 or 1000 100: COMPARE REG1, REG2 101: JUMP_IF_EQUAL CURRENT+10 … … Read more