A libc Solaris é baseada na libc GNU?

A libc Solaris é baseada na libc GNU?

No Solaris:

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

saída:

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

No Linux:

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

saída:

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

O Solaris libc é baseado no GNU libc? No Solaris é libc.so.1igual ao libc.so.6Linux?

Responder1

A biblioteca Solaris C não é baseada na biblioteca GNU C. Ambos implementam o padrão C e interfaces POSIX e alguns outros padrões, mas não compartilham uma herança comum além disso.

Solaris libc.so.1 traça sua história até a biblioteca AT&T System VC.

GNU libc.so.6 é baseado em glibc 2.0 ou superior. As versões anteriores (por exemplo, libc.so.5) da biblioteca Linux C eram um fork de uma versão anterior da glibc 1.x.

Você descobrirá que há algumas diferenças entre as duas bibliotecas. Por exemplo, Solaris libc contém algumas operações de string que a glibc não contém, strlcpy()sendo as mais óbvias para mim.

Nota adicional(mais de uma década depois): strlcpy()e strlcat()estão chegandoglibc2.38

Responder2

Por que? Porque ambos se autodenominam libc?

Não.

Ambos são chamados libcporque GNU libc tenta ser um substituto compatível para libc em Unices proprietários. Isso éa razão pela qual a licença LGPL foi criada.

Uma rápida pesquisa na web mostra alguns doscódigo fonte para Solaris libc. Escolhendoum arquivoaleatoriamente, as mensagens de direitos autorais dizem

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


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

então deve ser bastante óbvio que o código não vem do GNU.

Responder3

Solaris libc não é baseado no GNU libc, mas fornece interfaces semelhantes.

informação relacionada