【问题标题】:link static library (without -fPIC) to shared library on 64bit OS将静态库(不带 -fPIC)链接到 64 位操作系统上的共享库
【发布时间】:2012-11-28 22:15:05
【问题描述】:

我用 C++ 编写程序,从中创建共享库 - 完成后它将被 JNI 使用。我有第 3 方库( 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 的源代码...)

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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      试试这个:

      set_property(TARGET TheirLib PROPERTY POSITION_INDEPENDENT_CODE ON)

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

      Source for this answer

      【讨论】:

        猜你喜欢
        • 2011-04-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-10-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多