Was bedeutet „6“ in glibc.so.6?

Was bedeutet „6“ in glibc.so.6?

Beim Untersuchen der C++-Binärdatei stelle ich fest, dass libstdc++.so.6sie per Dyn-Link verknüpft ist mit libm.so.6und libc.so.6:

$ ldd /lib/x86_64-linux-gnu/libstdc++.so.6 
        linux-vdso.so.1 (0x00007ffcb737b000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd3b2295000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd3b1c00000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd3b2396000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fd3b2275000)

Meine Fragen sind:

  1. Was bedeutet 6der Name? Ich dachte ursprünglich, es wäre die Version von glibc, aber die Version ist 2.35, was für nicht relevant ist 6.

    $ strings /lib/x86_64-linux-gnu/libc.so.6  | grep GLIBC_2.3
    GLIBC_2.3
    ...
    GLIBC_2.35
    
  2. Warum ist das Suffix 6so beliebt?

  3. Gibt es einen Zeitplan für libc.so.7die Veröffentlichung?

Antwort1

Das Suffix 6 wird aus historischen Gründen verwendet, ausführlich beschrieben inman libcunter Linux. Im Wesentlichen wurde unter Linux ein Fork der GNU C-Bibliothek verwendet; dieser veröffentlichte die Hauptversionen 2 bis 5. Version 5 verwendete ELF und wurde mit dem Soname der gemeinsam genutzten Bibliothek veröffentlicht libc.so.5. Als Version 2 der GNU C-Bibliothek unter Linux veröffentlicht wurde, verwendete sie den Soname der gemeinsam genutzten Bibliothek, libc.so.6um Verwechslungen mit früheren Bibliotheken zu vermeiden.

Verwandte Bibliotheken verwenden dasselbe Suffix. Einige Architekturen verwenden ein leicht anderes Suffix. Die GNU C-Bibliothek auf Alpha und Itanium lautet beispielsweise libc.so.6.1.

Die GNU C-Bibliothek ist seit jeher abwärtskompatibel und verwendet viele verschiedene Mechanismen, um die Einführung bedeutender Änderungen zu unterstützen, ohne alte Binärdateien (einschließlich versionierter Symbole) zu beschädigen. Ein neuer Soname ( libc.so.7) würde nur verwendet, wenn eine nicht abmilderbare, schwerwiegende Änderung unbedingt erforderlich wäre. Daher ist es unwahrscheinlich, dass wir in naher Zukunft einen solchen sehen werden.

Antwort2

Es ist das ABI (Binäre Anwendungsschnittstelle) Ausführung.

Es wird nur erhöht, wenn eine bahnbrechende Änderung vorgenommen wird, die jetzt dringend vermieden wird , da die meisten Distributionen bereits seit einiger Zeit libcaktiviert sind .libc.so.6

Im Allgemeinen können mehrere inkompatible Versionen einer Bibliothek gleichzeitig auf einem System vorhanden sein und unterschiedliche Anwendungen unterstützen, die für die unterschiedlichen Versionen erstellt wurden.

Beispielsweise stellte Ubuntu 18.04 libcurl.so.3(über das Paket libcurl3) und libcurl.so.4(über das Paket libcurl4) bereit, die beide auf der Grundlage von cURL Version 7.58.0 erstellt wurden.

verwandte Informationen