2015-10-18 24 views
0

对于GCC和Linux的情况下,C++库是否依赖于C库? (对于GCC和Linux的情况下)

不知

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

  • 如果C库包含每个系统调用。

  • 如果C++库包含每个系统调用。

  • 如果存在任何提供C/C++库以外的系统调用的系统库。 (我相信pthread库prodives一些POSIX线程API)

在此先感谢您。

+3

取决于编译器的实现。 –

+0

感谢您的评论!然后想要为gcc和linux指定这个问题。 – Jeonghum

+2

@Journeyer然后,您应该编辑您的问题以包含该要求。 – Galik

回答

3

如果C++库依赖于C库API。对于GNU C,

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

如果C库包含每个系统调用。

它并不“包含”一个,因为系统调用是内核暴露的东西。 C库所做的是提供一些围绕系统调用的包装,但不是,不一定围绕它们。有助手可以调用没有提供包装的系统调用。也许从这里开始阅读:syscalls(2)

如果C++库包含每个系统调用。

参见上文。

如果存在任何提供C/C++库以外的系统调用的系统库。 (我相信pthread库prodives一些POSIX线程API)

是的(添加单词“包装”到您的措辞),你已经命名为一个例子。请注意,POSIX线程API不需要需要内核级别的线程,但它在Linux上使用它们实现。

2

是的,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)