2008-12-09 28 views
1

注意这两个RedHat的Linux系统配置设置:GNU_LIBC_VERSION和GNU_NPTL_VERSION有什么区别?

$ 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_VERSIONGNU_LIBPTHREAD_VERSION不同?
  3. 这些变量是否安全用于识别/lib/tls中的共享库?我想在Makefile中自动化这个,而不是硬编码一个神奇的glibc/pthread版本号。

回答

3

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

当它足够稳定时,它被合并成gli​​bc。我假设这两个版本在所有合理的最新安装中是相同的。

在Ubuntu 8.10的输出是这样的:

 
$ getconf GNU_LIBC_VERSION 
glibc 2.8.90 
$ getconf GNU_LIBPTHREAD_VERSION 
NPTL 2.8.90 
+0

您的系统是否有/lib/tls/libc-2.8.90.so? – Tom 2008-12-09 22:36:22