Basiert die Solaris-Bibliothek auf der GNU-Bibliothek?


6

Unter Solaris:

basename.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:

basename.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 Solaris libc auf GNU libc? Ist libc.so.1unter Solaris dasselbe wie libc.so.6unter Linux?

Antworten:


15

Die Solaris C-Bibliothek basiert nicht auf der GNU C-Bibliothek. Beide implementieren die C-Standard- und POSIX-Schnittstellen sowie einige andere Standards, teilen jedoch kein gemeinsames Erbe.

Solaris libc.so.1 verfolgt seinen Verlauf in der AT & T System VC-Bibliothek.

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 eine Abzweigung einer früheren Version von glibc 1.x.

Sie werden feststellen, dass es einen Unterschied zwischen den beiden Bibliotheken gibt. Zum Beispiel enthält Solaris libc einige Zeichenfolgenoperationen, die glibc nicht ausführt, wobei strlcpy () für mich am offensichtlichsten ist.


2
Übrigens gibt es libbsd , um Bibliotheksfunktionen zu verwenden, die von BSD stammen, wie strlcpy()unter Linux oder anderen Systemen, die keinen starken BSD-Einfluss haben.
Maxschlepzig

Es sieht nicht so aus, als ob libbsd über opencsw verfügbar ist, obwohl dies bedeuten könnte, dass sie keine Anfrage / Notwendigkeit dafür hatten.
Brian Vandenberg

3

Solaris libc basiert überhaupt nicht auf GNU libc, bietet jedoch ähnliche Schnittstellen.


3

Warum? Weil sie sich beide nennen libc?

Nein.

Sie werden beide aufgerufen, libcweil GNU libc versucht, ein kompatibler Ersatz für libc auf proprietären Unices zu sein. Aus diesem Grund wurde die LGPL-Lizenz erstellt .

Eine schnelle Websuche zeigt einen Teil des Quellcodes für Solaris libc . Wenn Sie eine Datei nach dem Zufallsprinzip auswählen, heißt es in den Copyright-Meldungen

/*  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.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.