我用c ++编写programm,从中创建共享库 - 完成它将由JNI使用。我有第三方库(libexample.a),需要将它链接到共享库(libshared.so)。问题是,我在64位CentOS上工作,创建共享库需要-fPIC,但第三方库没有用-fPIC编译。
直到建筑我回忆:
/usr/bin/ld: /home/tom/Project/src/libexample.a(SomeObject.o): relocation R_X86_64_32 against 'someData' can not be used when making a shared object; recompile with -fPIC
在这种情况下是否可以创建共享库? (我没有libexample.a的源代码......)
是否有任何解决方法可以使其正常工作?甚至在我必须编写其他应用程序的想法。
我希望我的问题不会重复(或多或少)因为我花了很长时间寻找可能性。 谢谢,bez
答案 0 :(得分:3)
没有办法做任何解决方法。我不得不写第三方库开发人员再次使用-fPIC
答案 1 :(得分:0)
试试这个:
set_property(TARGET TheirLib PROPERTY POSITION_INDEPENDENT_CODE ON)
这将在第三方项目上设置fPIC选项。