1

次の 2 つの 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か? 魔法の glibc/pthread バージョン番号をハードコーディングするのではなく、これを Makefile で自動化したいと考えています。
4

1 に答える 1

3

Linux で最初に pThreads を実装した NPTL プロジェクトは、最初にカーネル サポートを追加し、独自のライブラリを提供する別のプロジェクトでした。

十分に安定した時点で、glibc にマージされました。これら 2 つのバージョンは、合理的に最新のすべてのインストールで同一であると想定します。

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 に答える