Solaris libc는 GNU libc를 기반으로 합니까?

Solaris libc는 GNU libc를 기반으로 합니까?

솔라리스의 경우:

기본 이름.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

산출:

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

리눅스의 경우:

기본 이름.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

산출:

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

Solaris libc는 GNU libc를 기반으로 합니까? libc.so.1Linux와 Solaris가 동일합니까 libc.so.6?

답변1

Solaris C 라이브러리는 GNU C 라이브러리를 기반으로 하지 않습니다. 둘 다 C 표준과 POSIX 인터페이스 및 기타 몇 가지 표준을 구현하지만 그 이상에는 공통된 유산이 없습니다.

Solaris libc.so.1은 AT&T System VC 라이브러리에 뿌리를 두고 있습니다.

GNU libc.so.6은 glibc 2.0 이상을 기반으로 합니다. 이전 버전의 Linux C 라이브러리(예: libc.so.5)는 이전 glibc 1.x 버전의 포크였습니다.

이 두 라이브러리 간에는 몇 가지 차이점이 있습니다. 예를 들어, Solaris libc에는 glibc에 포함되지 않은 일부 문자열 작업이 포함되어 있는데, strlcpy()이는 제가 보기에 가장 분명합니다.

추가 정보(10년 이상 후): strlcpy()strlcat()출시될 예정입니다.glibc 2.38

답변2

왜? 그들 모두가 스스로를 부르기 때문에 libc?

아니요.

libcGNU libc가 독점 Unices에서 libc의 호환 가능한 대체 기능을 시도하기 때문에 이러한 이름이 붙었습니다 . 이것은LGPL 라이센스를 만드는 이유.

빠른 웹 검색으로 일부가 밝혀졌습니다.Solaris libc용 소스 코드. 선택하다하나의 문서무작위로 저작권 정보에 다음과 같이 나와 있습니다.

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


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

따라서 코드는 GNU에서 나온 것이 아닙니다.

답변3

Solaris libc는 GNU libc를 전혀 기반으로 하지 않지만 유사한 인터페이스를 제공합니다.

관련 정보