How can I tell, with something like objdump, if an object file has been built with -fPIC?

fpic, gcc, objdump, shared-libraries

Solution

The answer depends on the platform. On most platforms, if output from

readelf --relocs foo.o | egrep '(GOT|PLT|JU?MP_SLOT)'

is empty, then either `foo.o` was not compiled with `-fPIC`, or `foo.o` doesn't contain any code where `-fPIC` matters.

Problem

How can I tell, with something like `objdump`, if an object file has been built with `-fPIC`?

Original source