假设有一个应用程序JDK,它是针对某些linux版本编译的,比如4.18,可供下载。如何在不同的linux版本(比如3.10 )上运行相同的应用程序?当主要版本之间没有由Linux保证的ABI兼容性时。只有当用户程序和内核的二进制文件生成的内核版本相同时,ABI兼容性才能得到保证,如下图所示-

如果我对linux版本之间ABI不兼容的理解是正确的,那么为什么应用程序开发人员不提及生成二进制文件的linux版本。就像硬件架构-- x86、x64、ARM,他们提到了与其兼容的应用程序。
发布于 2020-10-04 18:45:45
内核ABI暴露在用户空间应该是稳定的中,也就是说,如果一个在给定内核上工作的程序停止在以后的内核上工作,那就被认为是一个严重的错误,并且通常会被修复。如果bug影响到稳定的内核系列中的任何版本,那么它的修复也将被支持。
当您看到对RHEL内核ABI的引用,并支持该旧内核时,这超出了上游内核开发人员“承诺”的内核ABI稳定性。
对于应用程序来说,库比内核更重要,而且不同的发行版对库的支持也不尽相同。例如,请参见RHEL 7兼容性指南 (请注意,它没有提到内核)。这就是LSB最关心的问题:它列出了应用程序可以依赖的库(与LSB兼容的发行版)以及它们的子项。
https://unix.stackexchange.com/questions/612864
复制相似问题