Основана ли библиотека Solaris libc на GNU libc?

Основана ли библиотека Solaris libc на GNU libc?

На Solaris:

базовое имя.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.1В Solaris то же самое, что и libc.so.6в Linux?

решение1

Библиотека Solaris C не основана на библиотеке GNU C. Они обе реализуют стандарт C и интерфейсы POSIX, а также некоторые другие стандарты, но за пределами этого общего наследия у них нет.

Библиотека Solaris libc.so.1 берет свое начало в библиотеке AT&T System VC.

GNU libc.so.6 основан на glibc 2.0 или выше. Более ранние версии (например, libc.so.5) библиотеки Linux C были ответвлением более раннего выпуска glibc 1.x.

Вы обнаружите, что между этими двумя библиотеками есть некоторые различия. Например, Solaris libc содержит некоторые строковые операции, которых нет в glibc, и strlcpy()это наиболее очевидно для меня.

Дополнительное примечание(более десяти лет спустя): strlcpy()и strlcat()приближаются кглибк 2.38

решение2

Почему? Потому что они оба называют себя libc?

Нет.

Они оба называются так, libcпотому что GNU libc пытается быть совместимой заменой libc на проприетарных Unix-системах. Этопричина создания лицензии 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, но они предоставляют похожие интерфейсы.

Связанный контент