如果我在一个发行版上使用jlink构建最小化的JRE(RHEL,Ubuntu等),它会在所有其他发行版上工作吗?作为一个基本测试,我在RHEL上创建了一个jre,它在Ubuntu上工作得很好,但是发行版的变体太多了,我无法全部测试。作为一个一般的经验法则,我应该期望构建在任何Linux系统上的Java在另一个系统上工作吗,假设相同的底层架构(amd64、aarch64等)?
jlink
eqoofvh91#
所有可用的证据都表明,是的,你可以期待这个应用程序在几乎所有的Linux系统上都能工作。一个jlink的镜像树有自己的lib目录,其中包括很多共享库。JVM经过了彻底的测试,我猜Linux版本至少在the certified system configurations上进行了全面的测试。我没有详细检查过jlink图像树中的每一个文件,但我从未注意到任何一个Linux发行版有什么特别之处(我构建在Debian上)。出于好奇,我在jlink'd应用程序中对精简的java二进制文件执行了ldd java。
lib
ldd java
linux-vdso.so.1 (0x00007ffecf94b000) libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f85827ca000) libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f8582795000) libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f858278f000) libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f85825ba000) /lib64/ld-linux-x86-64.so.2 (0x00007f8582816000)
(我省略了libjli.so,它位于图像树中。我假设它可以在任何存在这六个库的系统上运行。我怀疑一个典型的Linux系统会缺少它们中的任何一个。
1条答案
按热度按时间eqoofvh91#
所有可用的证据都表明,是的,你可以期待这个应用程序在几乎所有的Linux系统上都能工作。一个jlink的镜像树有自己的
lib
目录,其中包括很多共享库。JVM经过了彻底的测试,我猜Linux版本至少在the certified system configurations上进行了全面的测试。我没有详细检查过jlink图像树中的每一个文件,但我从未注意到任何一个Linux发行版有什么特别之处(我构建在Debian上)。
出于好奇,我在jlink'd应用程序中对精简的java二进制文件执行了
ldd java
。(我省略了libjli.so,它位于图像树中。
我假设它可以在任何存在这六个库的系统上运行。我怀疑一个典型的Linux系统会缺少它们中的任何一个。