我正在使用rhel3和glibc-2.3.2。我正在尝试从JDK5迁移到jdk8,但是像下面那样遇到GLIBC依赖性问题。基本上JDK1.7以后,GLIBC_2.4存在这种依赖关系。
java -version
Error: dl failure on line 883
Error: failed /homes/jdk1.8.0_45/jre/lib/i386/server/libjvm.so, because /lib/tls/libc.so.6: version `GLIBC_2.4' not found (required by /homes/JDK1.8/jdk1.8.0_45/jre/lib/i386/server/libjvm.so)
我无法在当前系统中安装最新的GLIBC,因为其他软件编译需要现有的glibc版本。我该怎么办?
答案 0 :(得分:0)
你确定吗?除了极少数例外(我无法在当前系统中安装最新的GLIBC,因为其他软件编译需要现有的glibc版本。
__ctype_b
是我所知道的唯一例外),较新版本的GLIBC是向后兼容的(旧版应用程序继续使用较新的GLIBC版本运行)。
我该怎么办?
如果确实无法更新系统glibc,则可以在非默认位置安装较新的glibc,并让JDK使用它。
有关如何执行此操作的一些详细信息,请参阅此answer。
另一种方法是使用"显式加载器调用",如下所示:
GLIBC221LIB=/path/to/glibc-2.21/lib
$GLIBC221LIB/ld-linux.so.2 --library-path $GLIBC221LIB \
/path/to/jdk8/bin/java ...args...
另一个替代方案是升级系统glibc,但将旧的glibc-2.3.2保留在非默认位置,并将与新glibc版本不兼容的(希望很少)应用程序指向旧版本。 / p>