将静态库(不带-fPIC)链接到64位操作系统上的共享库

时间:2012-12-11 11:01:33

标签: c++ linux java-native-interface shared-libraries static-libraries

我用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

2 个答案:

答案 0 :(得分:3)

没有办法做任何解决方法。我不得不写第三方库开发人员再次使用-fPIC

进行编译

答案 1 :(得分:0)

试试这个:

set_property(TARGET TheirLib PROPERTY POSITION_INDEPENDENT_CODE ON)

这将在第三方项目上设置fPIC选项。

Source for this answer