В чем разница между GNU_LIBC_VERSION и GNU_NPTL_VERSION? - PullRequest
1 голос
/ 10 декабря 2008

Обратите внимание на следующие два параметра конфигурации системы 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.

1 Ответ

3 голосов
/ 10 декабря 2008

Проект NPTL , который впервые реализовал pThreads в Linux, был отдельным проектом, изначально добавляющим поддержку ядра и предоставляющим собственную библиотеку.

Когда он стал достаточно стабильным, он был объединен с glibc. Я бы предположил, что эти две версии идентичны на всех достаточно современных установках.

В Ubuntu 8.10 вывод выглядит так:

$ getconf GNU_LIBC_VERSION
glibc 2.8.90
$ getconf GNU_LIBPTHREAD_VERSION
NPTL 2.8.90
...