Intereting Posts

Является ли Solaris libc на основе GNU libc?

В 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 

вывод:

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

В 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 

вывод:

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

Является ли Solaris libc основано на GNU libc? Является ли libc.so.1 на Solaris таким же, как libc.so.6 в Linux?

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

Solaris libc.so.1 отслеживает свою историю в библиотеке VC AT & T.

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

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

Solaris libc вовсе не основан на GNU libc, но они предоставляют аналогичные интерфейсы.

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

Нет.

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