使用cmake生成动态库时,cmake会自动添加-fPIC选项。那么在Linux中编译so,是否一定要加-fPIC选项呢?
参考文章(我也不知道哪个是原帖):linux编译动态库之fPIC - 知乎 (zhihu.com)
gcc-5 + ubuntu16

image.png
测试结果与文章描述一致,调用外部函数不加-fPIC会出错。
gcc-5 + ubuntu18

image.png
然而在ubuntu18里,即使不加-fPIC也没有出错。
所以,是不是在ubuntu18里,-fPIC已经是一个默认选项了呢?
g++-5 + ubuntu18

image.png
然而,这个例子反证了上述猜测。
gcc-5 + ubuntu18,示例2

image.png
这个例子证明了,-fPIC在ubuntu18里并不是默认选项。