【问题标题】:Does C++ library depend on C library? (for the case of GCC and linux)C++ 库是否依赖于 C 库? (对于 GCC 和 linux 的情况)
【发布时间】:2015-10-18 10:58:49
【问题描述】:

对于 GCC 和 linux,

不知道

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

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

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

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

提前谢谢你。

【问题讨论】:

  • 取决于编译器的实现。
  • 感谢您的评论!然后想为gcc和linux指定这个问题。
  • @Journeyer 那么您应该编辑您的问题以包含该要求。
  • 感谢您的回答!!

标签: c++ c system


【解决方案1】:

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

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

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

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

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

见上文。

如果存在任何提供系统调用的系统库,而不是 C/C++ 库。 (我相信 pthread 库提供了一些 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)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-08-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-08-08
      • 2014-07-20
      • 2019-05-04
      • 2020-01-22
      相关资源
      最近更新 更多