0

realpath我的 Linux 机器上的手册页说:

VERSIONS
       On Linux this function appeared in libc 4.5.21.

这是什么意思?它指的是哪个 libc - “Linux libc”?- 我在哪里可以找到一个与不同的 libc 风格相匹配的列表,这样我就可以看到链接到这个函数和其他函数的最低要求是什么?

GLIBC 的版本为 2.13,远低于 4.5.21,但关于 glibc 的 Wikipedia 页面说:

在 1990 年代初期,Linux 内核的开发者分叉了 glibc。他们的分支,称为“Linux libc”,多年来一直单独维护,并发布了版本 2 到 5。

... 和

最后使用的 Linux libc 版本使用内部名称 (soname) libc.so.5。在此之后,Linux 上的 glibc 2.x 使用 soname libc.so.6

这是否意味着任何 glibc 都等同于主版本高于 5 的“Linux libc”?

还有其他手册页引用了这个或那个版本的“libc”,所以realpath这只是整个问题的一个例子。

注意:我正在构建的代码不限于Linux,这就是为什么我需要一个确定的方法来检测某个功能是否可用。

4

1 回答 1

2

glibc 虽然是 2.x 版,但多年来一直被称为“libc6”,以与旧的 libc3/4/5 的版本控制方案兼容。无论如何,Linux 系统上的手册页非常有用,但不一定是规范的。glibc 使用“信息”系统而不是手册页,因此对于 glibc 函数,您最好查看glibc 手册而不是手册页。虽然 realpath 函数上的错误类别在历史背景下很有趣,但除非您针对的是 libc5 系统(当然您不是),否则它并不是特别有用。

于 2011-05-05T15:08:44.663 回答