¿La libc de Solaris está basada en la libc de GNU?

¿La libc de Solaris está basada en la libc de GNU?

En Solaris:

nombrebase.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

producción:

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

En Linux:

nombrebase.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

producción:

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

¿Solaris libc está basado en GNU libc? ¿Es libc.so.1lo mismo en Solaris que libc.so.6en Linux?

Respuesta1

La biblioteca Solaris C no se basa en la biblioteca GNU C. Ambos implementan el estándar C y las interfaces POSIX y algunos otros estándares, pero no comparten una herencia común más allá de eso.

Solaris libc.so.1 remonta su historia a la biblioteca AT&T System VC.

GNU libc.so.6 está basado en glibc 2.0 o superior. Las versiones anteriores (por ejemplo, libc.so.5) de la biblioteca C de Linux eran una bifurcación de una versión anterior de glibc 1.x.

Encontrará que hay algunas diferencias entre las dos bibliotecas. Por ejemplo, Solaris libc contiene algunas operaciones de cadenas que glibc no contiene, strlcpy()siendo para mí la más obvia.

Nota adicional(más de una década después): strlcpy()y strlcat()están llegando aglibc 2.38

Respuesta2

¿Por qué? ¿Porque ambos se llaman a sí mismos libc?

No.

Ambos se llaman así libcporque GNU libc intenta ser un reemplazo compatible de libc en Unices propietarios. Esto esla razón por la que se creó la licencia LGPL.

Una búsqueda rápida en la web muestra algunas de lascódigo fuente para Solaris libc. Cosechaun archivoal azar, los mensajes de derechos de autor dicen

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


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

entonces debería ser bastante obvio que el código no proviene de GNU.

Respuesta3

Solaris libc no se basa en absoluto en GNU libc, pero proporciona interfaces similares.

información relacionada