最近在调试一个功能时,使用到了一个第三方库,第三方提供的是一个静态库。这个库在我们之前其他的平台上已经用过了。换到新的平台上面。简单测试过后,发现也能用。
后面将库添加到工程里面,发现会死在第三方库里面。
两者的区别在于:
简单测试时:程序直接链接了第三方提供的静态库。
添加到工程里面:我们工程输出的是动态库,相当于我们的动态库里面包含了第三方的静态库。
排查了很久,后面怀疑可能是fPIC选项导致的。找第三方确认他们编译的时候,是否添加了fPIC选项,发现他们没有添加。让他们添加后,重新提供过来,发现问题就解决了。