Basiert die Solaris-Bibliothek auf der GNU-Bibliothek?

Basiert die Solaris-Bibliothek auf der GNU-Bibliothek?

Unter Solaris:

Basisname.c

#include <stdio.h>
#include <libgen.h>

int main(int argc, char* argv[])
{
    int len = strlen(argv[0]);
    char *bsname = basename(argv[0]);
    printf("%s\n", bsname);
    printf("%d\n", len);
    return 0;
}
cc basename.c
ldd a.out

Ausgabe:

libc.so.1 => /lib/libc.so.1
libm.so.1
......

Unter Linux:

Basisname.c

#include <stdio.h>
#include <libgen.h>

int main(int argc, char* argv[])
{
    int len = strlen(argv[0]);
    char *bsname = basename(argv[0]);
    printf("%s\n", bsname);
    printf("%d\n", len);
    return 0;
}
gcc basename.c
ldd a.out

Ausgabe:

libc.so.6 => /lib/libc.so.6 
......

Basiert die Solaris-Libc auf der GNU-Libc? Ist sie libc.so.1unter Solaris dasselbe wie libc.so.6unter Linux?

Antwort1

Die Solaris C-Bibliothek basiert nicht auf der GNU C-Bibliothek. Beide implementieren den C-Standard und POSIX-Schnittstellen sowie einige andere Standards, haben darüber hinaus aber keine gemeinsame Grundlage.

Die Geschichte der Solaris libc.so.1 geht auf die VC-Bibliothek des AT&T-Systems zurück.

GNU libc.so.6 basiert auf glibc 2.0 oder höher. Die früheren Versionen (z. B. libc.so.5) der Linux C-Bibliothek waren ein Fork einer früheren glibc 1.x-Version.

Sie werden feststellen, dass es zwischen den beiden Bibliotheken einige Unterschiede gibt. Solaris libc enthält beispielsweise einige String-Operationen, die glibc nicht hat. Das strlcpy()ist für mich das Offensichtlichste.

Zusätzliche Anmerkung(über ein Jahrzehnt später): strlcpy()und strlcat()kommen zuglibc 2.38

Antwort2

Warum? Weil sie sich beide so nennen libc?

NEIN.

Sie werden beide aufgerufen, libcweil GNU libc versucht, ein kompatibler Ersatz für libc auf proprietären Unices zu sein. Dies istder Grund für die Erstellung der LGPL-Lizenz.

Eine schnelle Websuche zeigt einige derQuellcode für Solaris libcKommissionierungeine Dateizufällig, die Copyright-Meldungen dort sagen

/*  Copyright (c) 1988 AT&T */
/*    All Rights Reserved   */


/*
 * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
 * Use is subject to license terms.
 */

Es sollte also ziemlich offensichtlich sein, dass der Code nicht von GNU stammt.

Antwort3

Solaris libc basiert überhaupt nicht auf GNU libc, aber sie bieten ähnliche Schnittstellen.

verwandte Informationen