首页 > 解决方案 > RPATH 不用于 java JNI 库

问题描述

它是一个 CentOS 7.5 aarch64 盒子。我在我的目录/opt/build中安装了gcc 6.1,并使用新版本构建了一个jni库,带有-Wl,-rpath=/opt/build/lib。
所以 jni 库被绑定到 /opt/build/lib/libstdc++.so.6。我已经用 ldd 和 chrpath 双重检查了这一点。
然后我用 java -jar app.jar 试了一下。

线程“主”java.lang.UnsatisfiedLinkError 中的异常:/opt/app/lib/libmylib.so.3.14.0:/lib64/libstdc++.so.6:未找到版本“GLIBCXX_3.4.20”(/opt/ 要求)应用程序/lib/libmylib.so.3.14.0)

很明显,即使 RPATH 设置为 /opt/build/lib,/opt/app/lib/libmylib.so.3.14.0 也会尝试链接到 /lib64/libstdc++.so.6。

不知道为什么...

标签: javajava-native-interfacerpath

解决方案


推荐阅读