stdio.h - 什么是libfile的名称,我在哪里可以找到它

时间:2014-09-01 19:11:43

标签: c linux stdio

我对c语言中的stdio.h有疑问。

好 - 这只包含标准输入和输出流的函数原型。 但是这个标准的输入和输出必须有一个libfile(objectfile),对吗?

但它的名称是什么,它位于Linux(ubuntu)的哪个文件夹中?

1 个答案:

答案 0 :(得分:2)

如果我编译一个简单的hello world C程序,我会得到这个:

% ldd easy
linux-vdso.so.1 =>  (0x00007fffcc9fe000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4a90eb6000)
/lib64/ld-linux-x86-64.so.2 (0x00007f4a91299000)

为什么需要libc

% nm easy
...
000000000040052d T main
             U printf@@GLIBC_2.2.5

符号printfglibc提供。 nm显示该对象正在提供printf符号:

% nm -D /lib/x86_64-linux-gnu/libc.so.6 | grep printf
...
00000000000542f0 T printf
0000000000109dc0 T __printf_chk
000000000004f1d0 T __printf_fp

或者,您可以要求ldd打印调试信息:

% LD_DEBUG=bindings ./easy 2>&1 | grep printf
    17922:  binding file ./easy [0] to /lib/x86_64-linux-gnu/libc.so.6 [0]:\ 
    normal symbol `printf' [GLIBC_2.2.5]