64 位 java glibc 依赖项,不兼容

64-bit java glibc dependency, not compatible

有人可以给我一些解决这个 java 程序的建议吗?太感谢了。 我需要运行64位java和64位CentOS系统,但是程序不兼容我的glibc-2.14库。我手动构建了这个 glibc 库并将其添加到我的 LD_LIBRARY_PATH 因为我没有 ROOT 权限并且我需要该库用于其他一些程序。

我可以成功运行 32位版本:

[gmswenm@login-7-0 ~]$ java -version
java version "1.8.0_92"
Java(TM) SE Runtime Environment (build 1.8.0_92-b14)
Java HotSpot(TM) Server VM (build 25.92-b14, mixed mode)

但我的管道需要 64 位 java,当我 运行 使用相同命令的 64 位版本时,命令卡住了。当我从 link 路径中删除 glibc 时,它可以 运行 顺利,但是我不能 运行 其他程序,这很伤心。

64位java的strace信息在这里,谢谢:

[gmswenm@login-7-0 ~]$ strace jdk1.8.0_92/bin/java -version:

execve("jdk1.8.0_92/bin/java", ["jdk1.8.0_92/bin/java", "-version"], [/* 120 vars */]) = 0
brk(0)                                  = 0x980000
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f643e655000
readlink("/proc/self/exe", "/home//jdk1.8.0_92/bin/java", 4096) = 34
access("/etc/ld.so.preload", R_OK)      = -1 ENOENT (No such file or directory)

futex(0x7f643ca249d0, FUTEX_WAIT, 11029, NULL <unfinished ...>

This answer 解释了为什么您不能简单地设置 LD_LIBRARY_PATH 以指向不同的 GLIBC,以及如何实现您想要的结果。