c++库是否依赖于C库?(对于GCC和linux来说)

Does C++ library depend on C library? (for the case of GCC and linux)

本文关键字:GCC linux 来说 对于 是否 依赖于 c++      更新时间:2023-10-16

对于GCC和linux,

我想知道

  • 如果c++库依赖于C库API

  • 如果c++库包含所有系统调用

  • 如果存在提供系统调用的系统库,而不是C/c++库。(我相信pthread库提供了一些posix线程API)

提前感谢。

如果c++库依赖于C库API

对于GNU C,是的。这样做可能是有益的,因为许多C标准库函数也是c++标准的一部分。

如果C库包含所有系统调用。

它没有"包含"一个单独的系统调用,因为系统调用是由内核公开的。C库所做的是为系统调用提供一些包装器,但不,不一定是所有的包装器。有一些帮助程序可以调用没有提供包装器的系统调用。也许从这里开始读:syscalls(2) .

如果c++库包含所有的系统调用

见上图。

如果存在提供系统调用的系统库,而不是C/c++库。(我相信pthread库提供了一些posix线程API)

是的(在你的措辞中添加了"包装器"这个词),而且你已经举了一个例子。请注意,POSIX线程API不需要内核级线程,但它在Linux上使用它们实现。

是,GNU c++库与GNU C库链接。

$ ldd /usr/lib/x86_64-linux-gnu/libstdc++.so.6.0.20
    linux-vdso.so.1 =>  (0x00007ffc1b5bc000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fb25239c000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fb251fd2000)
    /lib64/ld-linux-x86-64.so.2 (0x00007fb2529b3000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fb251dbc000)