O Solaris libc é baseado no GNU libc?

7

No 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

saída:

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

No 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

saída:

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

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

    
por fliu 21.03.2012 / 06:51

3 respostas

16

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

O Solaris libc.so.1 traça seu histórico para a biblioteca AT & T System V C.

O GNU libc.so.6 é baseado no 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 do glibc 1.x.

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

    
por 21.03.2012 / 07:32
3

O Solaris libc não é de todo baseado no GNU libc, mas eles fornecem interfaces similares.

    
por 21.03.2012 / 07:23
2

Por quê? Porque ambos se chamam libc ?

Não.

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

Uma rápida pesquisa na web mostra alguns dos código-fonte do Solaris libc . Escolhendo um arquivo em aleatoriamente, as mensagens de copyright lá 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 bem óbvio que o código não vem do GNU.

    
por 21.04.2012 / 23:51