java - JNI 加载用 c++11 编译的 .so 文件出现错误“/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found”
问题描述
我用 gcc 4.8.2(这是 c++11 版本,我的 C++ 代码需要它)编译了 C++ 代码并生成了一个libmy.so
文件。我想libmy.so
用 JNI 从 Java 代码中调用方法,并且我已经设置LD_LIBRARY_PATH
为libmy.so
. 运行 Java 代码时,错误信息如下:
线程“主”java.lang.UnsatisfiedLinkError 中的异常:.../libmy.so:/usr/lib64/libstdc++.so.6:未找到版本“GLIBCXX_3.4.18”(libmy.so 需要)
因为这个Linux机器是常用的,所以我不想修改/usr/lib64中的文件(例如,修改链接libstdc++.so.6
)。
顺便说一句,我的JDK版本是1.8,我试过JDK 1.11,它也失败了。
似乎 Java 无法加载正确版本的libstdc++.so.6
(also for libc.so
),但我不确定。
如何解决这个问题?非常感谢!
解决方案
推荐阅读
- wordpress - 通过 Javascript 将模板分配给帖子类型
- android - 我可以访问 Google Play 音乐 MIDI 声音吗?
- python - 我可以散列一个 UUID 以获得更高的熵吗 - Python
- ethereum - 使用 Node-RED 离线签署以太坊交易
- c# - c#应用程序中的Excel工作表视图
- laravel - Traits\SimpleTree getAllChildren 方法获取数组中的重复子项
- arrays - 如何在Angular2中推入后找到数组对象的值
- c# - UWP APP 使用 Xbox 控制器代替鼠标
- mongodb - 使用 docker-compose 将我的 netcore 应用程序连接到 mongodb?
- hadoop - 通过 Kylin 构建多维数据集创建配置单元表时出错