Là libc Solaris dựa trên libc GNU?


6

Trên Solaris,

tên cơ sở

#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

đầu ra

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

Trên Linux,

tên cơ sở

#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

đầu ra

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

Là Solaris libc dựa trên GNU libc? Có phải libc.so.1trên Solaris giống như libc.so.6trên Linux không?

Câu trả lời:


15

Thư viện Solaris C không dựa trên Thư viện GNU C. Cả hai đều thực hiện giao diện chuẩn C và POSIX và một số tiêu chuẩn khác, nhưng họ không chia sẻ một di sản chung ngoài điều đó.

Solaris libc.so.1 theo dõi lịch sử của nó đến thư viện VC của AT & T.

GNU libc.so.6 dựa trên glibc 2.0 trở lên. Các phiên bản trước đó (ví dụ libc.so.5) của thư viện Linux C là một nhánh của bản phát hành glibc 1.x trước đó.

Bạn sẽ thấy rằng có một số khác biệt giữa hai thư viện. Ví dụ, Solaris libc chứa một số hoạt động chuỗi mà glibc không có, strlcpy () là rõ ràng nhất đối với tôi.


2
Btw, có libbsd để sử dụng các chức năng thư viện bắt nguồn từ BSD như strlcpy()trong Linux hoặc các hệ thống khác không có ảnh hưởng BSD mạnh.
maxschlepzig

Nó không có vẻ như libbsd có sẵn thông qua opencsw, mặc dù điều đó có nghĩa là họ không có yêu cầu / nhu cầu cho nó.
Brian Vandenberg

3

Solaris libc hoàn toàn không dựa trên GNU libc nhưng chúng cung cấp các giao diện tương tự.


3

Tại sao? Vì cả hai tự gọi mình libc?

Không.

Cả hai đều được gọi libcvì GNU libc cố gắng trở thành một sự thay thế tương thích cho libc trên Unices độc quyền. Đây là lý do giấy phép LGPL được tạo .

Một tìm kiếm trên web nhanh chóng cho thấy một số mã nguồn cho Solaris libc . Chọn một tệp ngẫu nhiên, các thông điệp bản quyền ở đó cho biết

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


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

Vì vậy, rõ ràng là mã không đến từ GNU.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.