错误
relocation R_AARCH64_ADR_PREL_PG_HI21 against symbol _ZTVSt9basic_iosIcSt11char_traitsIcEE@@GLIBCXX_3.4' which may bind externally can not be used when making a shared object; recompile with -fPIC
原因
原先测试第三方静态库.a文件时,直接demo,控制台main直接调用接口,测试OK。
于是,开始封装它。由于项目需求,我们封装的是动态库.so文件。
最终,在打包生成时报了以上错误。
分析+解决方案
网上也看了很多解决方案,总结如下:
1、第三方静态库没有fPIC编译。
2、让第三方直接出动态库。
第三方协同查看了下,发现他们静态库调用的开源库(openssl
)没有fPIC编译。
解决方法:静态库没有fPIC编译, 只要在configure时加上--enable-shared即可, 即: ./configure --enable-shared