2015-10-18 22 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)