64位java glibc依赖,不兼容

时间:2016-08-03 12:15:22

标签: java linux 64-bit glibc

有人可以就如何解决这个java程序给我一些建议吗?非常感谢。 我需要运行64位java on和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位版本时,命令会卡住。当我从链接路径中删除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 ...>

1 个答案:

答案 0 :(得分:0)

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