在构建编译器时,除了 glibc 版本之外,还必须指定 Linux 头文件版本和最低支持的内核版本。然后在目标机器上有实际的内核版本和 glibc 版本(具有自己的内核头文件版本和最低支持的内核版本)。我很困惑试图理解这些版本是如何结合在一起的。
示例 1:假设我有针对内核头文件3.14构建的 glibc 2.13系统。这有任何意义吗?glibc 2.13(2011 年发布)如何使用3.14(2014 年发布)的新内核特性?
示例 2:假设我有一个 glibc 版本高于2.13的编译器。编译后的程序可以在带有 glibc 2.13的系统上运行吗?如果编译器的 glibc 版本早于2.13?
示例 3:来自https://sourceware.org/glibc/wiki/FAQ#What_version_of_the_Linux_kernel_headers_should_be_used.3F我知道如果它满足编译 glibc 时使用的“最低内核版本”,则可以使用旧内核。但我不明白这段话The other way round (compiling the GNU C library with old kernel headers and running on a recent kernel) does not necessarily work as expected. For example you can't use new kernel features if you used old kernel headers to compile the GNU C library.
。这是唯一可能发生在我身上的事情吗?如果内核比编译时更新,它不会破坏 glibc 中的某些东西吗?
示例 4:在 glibc 设置中进行更细微的区别(例如,将可执行文件与根据内核头文件3.Y编译的 glibc 版本2.X与最低支持的内核版本2.6.A 相链接,并在具有相同 glibc 2.X的系统上执行,但是针对内核头文件3.Z编译,最小支持内核版本2.6.B)有什么影响吗?我怀疑他们不是,但想确定一下。
这么多问题:) 谢谢!