java - 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。
不知道为什么...
解决方案
推荐阅读
- c# - 自动检测数组[]的类型并参考正确的排序操作方法
- swift - 创建自定义框架并将其用于导致崩溃的其他项目
- github - 如果创建者的帐户被删除,我们还能合并 Github Pull Request
- discord.net - 异步 Discord.net 机器人读取消息...希望在启动时获取历史记录
- python - 无法在 Cloud Run 应用中读取 pickle 文件。TypeError: __cinit__() 至少需要 2 个位置参数
- vue.js - Vue即时搜索自动完成消失太快
- mysql - MySQL每日事件未更新
- c - 为什么我的 switch case 会直接默认?
- haskell - 函数依赖图的 Haskell 代码
- c# - 如何添加更多测试数据来断言哪个返回对象?