1

注意这两个 RedHat Linux 系统配置设置:

$ getconf GNU_LIBC_VERSION
glibc 2.3.4

$ getconf GNU_LIBPTHREAD_VERSION
NPTL 2.3.4

我看到它们对应于一些 TLS 库:

/lib/tls/libc-2.3.4.so
/lib/tls/libm-2.3.4.so
/lib/tls/libpthread-2.3.4.so
/lib/tls/librt-2.3.4.so

我想链接这些库而不是/usr/lib等价物。我有几个问题:

  1. 我在 RedHat 和 Debian 上看到过这个。它是否存在于所有 GNU Linux 发行版中?
  2. 有什么GNU_LIBC_VERSION不同的情况GNU_LIBPTHREAD_VERSION吗?
  3. 这些变量是否可以安全地用于识别中的共享库/lib/tls?我想在 Makefile 中自动执行此操作,而不是硬编码一个神奇的 glibc/pthread 版本号。
4

1 回答 1

3

最初在 Linux 上实现 pThreads的 NPTL 项目是一个单独的项目,最初添加了内核支持并提供了自己的库。

当它足够稳定时,它被合并到 glibc 中。我会假设这两个版本在所有合理的最新安装上都是相同的。

在 Ubuntu 8.10 上,输出是这样的:

$ getconf GNU_LIBC_VERSION
glibc 2.8.90
$ getconf GNU_LIBPTHREAD_VERSION
NPTL 2.8.90
于 2008-12-09T22:12:28.297 回答