GCC编译静态库的-fPIC选项linux下gcc编译的四个步骤
GCC编译静态库的-fPIC选项
背景
通常在linux下⽤gcc编译动态库时都会加上⼀个-fPIC选项来⽣成位置⽆关代码,但是从来没有⼈明确的说过是不是要在编译静态库时也加上-fPIC选项。我在这篇⽂章中就给出⼀个明确的结论并讲述原理。
介绍-fPIC的原理的⽂章⽹上汗⽜充栋这⾥不再赘述。
原理分析
众所周知,静态库其实是⼀系列.o⽂件的打包,将.o⽂件制作成静态库的过程是不会发⽣链接的。
所以链接静态库就约等于将静态库解包后的.o⽂件⼀个⼀个全部链接。
-fPIC选项的⽣效阶段在编译阶段,使⽤-fPIC选项编译的.o⽂件会⽣成位置⽆关的代码
如果⼀个动态库需要链接⼀个静态库,那么就相当于动态库去链接⼀系列的.o⽂件,⽽编译动态库所需的.o⽂件时⼀般是推荐使⽤-fPIC编译选项的。
结论
如果你的静态库可能会被动态库使⽤,那么静态库编译的时候就也需要-fPIC选项。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论