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

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

我用 C++ 编写程序,将从中创建共享库 - 完成后将由 JNI 使用。我有第 3 方库 ( libexample.a ),需要将它链接到共享库 ( libshared.so )。问题是,我在 64 位 CentOS 上工作,需要 -fPIC 来创建共享库,但第 3 方库不是用 -fPIC 编译的。

直到构建我收到: /usr/bin/ld:/home/tom/Project/src/libexample.a(SomeObject.o):创建共享对象时不能使用针对“someData”的重定位 R_X86_64_32;重新编译 -fPIC

在这种情况下是否可以创建共享库? (我没有 libexample.a 的源代码...)

是否有任何解决方法可以使其正常工作?甚至是我必须编写其他应用程序的想法。

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

最佳答案

没有任何解决方法。我不得不写信给第 3 方库开发人员以使用 -fPIC

再次编译

关于c++ - 将静态库(不带 -fPIC)链接到 64 位操作系统上的共享库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13818921/

相关文章:

c++ - 列长度​​是否用 cpp 中的二维数组保存?

c++ - 如何将 QListWidget 中的当前选择设置为无?

c++ - 如何编译运行一个vmmlib测试程序?

python - 未绑定(bind)本地错误 : local variable 'W' referenced before assignment

android - 从 NDK 代码访问应用程序数据路径

java - 使用 JNI 在 C++ 中加载 .jar 文件

c++ - 我可以更改 QT 中主应用程序的图标大小吗?

python - 使用 subprocess.Popen 与 os.popen 执行命令 "ls -d */"

linux - 这是 cron 作业的正确格式吗?

java - 避免 Android 中 Java 代码生成 JNI 错误