基于一个Linux发行版的Java能在所有其他发行版上运行吗?

rvpgvaaj  于 2023-04-11  发布在  Linux
关注(0)|答案(1)|浏览(194)

如果我在一个发行版上使用jlink构建最小化的JRE(RHEL,Ubuntu等),它会在所有其他发行版上工作吗?作为一个基本测试,我在RHEL上创建了一个jre,它在Ubuntu上工作得很好,但是发行版的变体太多了,我无法全部测试。作为一个一般的经验法则,我应该期望构建在任何Linux系统上的Java在另一个系统上工作吗,假设相同的底层架构(amd64、aarch64等)?

eqoofvh9

eqoofvh91#

所有可用的证据都表明,是的,你可以期待这个应用程序在几乎所有的Linux系统上都能工作。一个jlink的镜像树有自己的lib目录,其中包括很多共享库。JVM经过了彻底的测试,我猜Linux版本至少在the certified system configurations上进行了全面的测试。
我没有详细检查过jlink图像树中的每一个文件,但我从未注意到任何一个Linux发行版有什么特别之处(我构建在Debian上)。
出于好奇,我在jlink'd应用程序中对精简的java二进制文件执行了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系统会缺少它们中的任何一个。

相关问题