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

Linuxの場合:

デフォルト名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バージョンのフォークでした。

これら2つのライブラリの間にはいくつかの違いがあります。たとえば、Solaris libcにはglibcに含まれていないいくつかの文字列操作が含まれています。strlcpy()これは私のビューにとって最も明白です。

追加情報(10年以上後):strlcpy()まもなくstrlcat()リリースされる予定です。glibc 2.38

答え2

なぜ?彼ら全員が自分自身を呼ぶのでlibc

いいえ。

libcGNU libcは独自のUnicesでlibcの互換性のある代替機能を試みたため、これらの名前が付けられました。これはLGPLライセンスを作成する理由

迅速なウェブ検索で一部が明らかになった。Solaris libcのソースコード。選ぶ1つの文書ランダムに著作権情報に次のように記載されています。

/*  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にはまったく基づいていませんが、同様のインタフェースを提供します。

関連情報