-fPIC and shared object

Andrew Haley aph-gcc@littlepinkcloud.COM
Thu Jun 28 17:15:00 GMT 2007


Olivier Delannoy writes:
 > Hello,
 > 
 > I am using linux and I would like to understand the role of -fPIC. I
 > understand that it generate code where function address can be
 > calculated indirectly after relocation of the .so in applications
 > using it. My questions are :
 > 
 > - Is it required to compile with -fPIC every object file packed in a
 > dynamic shared object ?

Yes.  (Well, kinda: there is a platform that allows relocation to be
performed on shared objects after loading, but it's inefficient and is
purely a backawards compatibility hack.)

 > - Is is possible to integrate a static library in a .so  safely
 > (assuming the static library is not compiled using -fPIC)

No.

 > - Is the answer to the previous question the same if the library is
 > used only within the boundary of the .so (hidden to the rest of the
 > application) ?

Yes.

Andrew.



More information about the Gcc-help mailing list