3

我用 c++ 编写程序,从中将创建共享库 - 完成后它将被 JNI 使用。我有 3rd 方库( libexample.a ),需要将其链接到共享库( libshared.so )。问题是,我在 64 位 CentOS 上工作,并且需要 -fPIC 来创建共享库,但是第 3 方库没有使用 -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 的源代码 ...)

有什么解决方法可以让它工作吗?甚至我必须编写其他应用程序的想法。

我希望我的问题不会重复(或多或少),因为我花了很长时间寻找可能性。谢谢,贝兹

4

2 回答 2

3

没有办法解决任何问题。我不得不写信给第 3 方库开发人员以再次编译-fPIC

于 2013-03-24T23:02:39.150 回答
0

试试这个:

set_property(TARGET TheirLib PROPERTY POSITION_INDEPENDENT_CODE ON)

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

此答案的来源

于 2016-07-11T03:06:49.477 回答