RPATH不用于java JNI库

RPATH不用于java JNI库,java,java-native-interface,rpath,Java,Java Native Interface,Rpath,这是一个CentOS 7.5 aarch64机箱。我在目录/opt/build中安装了GCC6.1,并使用新版本构建了一个jni库,其中包含-Wl,-rpath=/opt/build/lib。 因此,jni库被绑定到/opt/build/lib/libstdc++.So.6。我已与ldd和chrpath进行了双重检查。 然后我使用java-jarapp.jar来尝试它 线程“main”java.lang.unsatifiedLinkError:/opt/app/lib/libmylib.so.3

这是一个CentOS 7.5 aarch64机箱。我在目录/opt/build中安装了GCC6.1,并使用新版本构建了一个jni库,其中包含-Wl,-rpath=/opt/build/lib。
因此,jni库被绑定到/opt/build/lib/libstdc++.So.6。我已与ldd和chrpath进行了双重检查。
然后我使用java-jarapp.jar来尝试它

线程“main”java.lang.unsatifiedLinkError:/opt/app/lib/libmylib.so.3.14.0:/lib64/libstdc++.so.6:找不到版本“GLIBCXX_3.4.20”(由/opt/app/lib/libmylib.so.3.14.0所需)

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


不知道为什么…

假设您在Linux上运行,您是否尝试在
strace
下运行JVM,并跟踪加载本机库时进行的系统调用?我已经搜索过了,JVM尝试从JRE_HOME/lib/aarch64/libstdc++.so.6加载libstdc++.so.6,完全忽略了RPATH。你设法避开了吗?我遇到了完全相同的问题假设您在Linux上运行,您是否尝试在
strace
下运行JVM并跟踪加载本机库时进行的系统调用?我已经找到了,JVM尝试从JRE_HOME/lib/aarch64/libstdc++.so.6加载libstdc++.so.6,完全忽略了RPATH。你设法避开了吗?我也有同样的问题