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

3
我用C++编写程序,将生成共享库,并由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个回答

3

没有办法进行任何解决办法。我不得不给第三方库的开发者写信,要求再次使用 -fPIC 进行编译。


0
尝试这个:
set_property(TARGET TheirLib PROPERTY POSITION_INDEPENDENT_CODE ON)
这将在第三方项目上设置fPIC选项。 此答案的来源

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接