![使用旧版 GLIBC 运行 Java 时出现分段错误](https://linux22.com/image/611446/%E4%BD%BF%E7%94%A8%E6%97%A7%E7%89%88%20GLIBC%20%E8%BF%90%E8%A1%8C%20Java%20%E6%97%B6%E5%87%BA%E7%8E%B0%E5%88%86%E6%AE%B5%E9%94%99%E8%AF%AF.png)
我正在尝试运行Java 1.7.0_21-b11
。Java GLIBC 2.3.6
7 至少需要GLIBC 2.4
。
我试过了这解决方案,因此使用 ldd,我发现了以下依赖项:
ld-2.7.so
ld-linux.so.2
libc.so.6
libdl.so.2
libpthread.so.0
我从类似但较新的系统(均为 Slackware)复制了这些文件(以及ld-2.7.so
),并尝试使用预加载的库来调用 java,但出现了段错误:
$ LD_PRELOAD="./ld-linux.so.2 ./libc.so.6 ./libd l.so.2 ./libpthread.so.0" ./ld-2.7.so /usr/lib/java_new/bin/java
Segmentation fault
我有点困惑,所以如果能提供任何关于如何进行的建议我将非常感激。
答案1
我遇到了同样的问题——在运行旧 Ubuntu 的构建服务器上运行 Java。
我已将所有必需的库安装在一个文件夹中,并使用 LD_LIBRARY_PATH 指向它们。但它不起作用。我认为问题在于 glibc 与内核不兼容。
解决方案是安装新的 Linux 发行版并将构建服务器迁移到新的 Ubuntu。