在哪里可以找到包含printf函数定义的目标文件?

时间:2012-07-25 16:22:33

标签: gcc printf object-files

我正在使用gcc编译器和ubuntu 12.04操作系统。我想知道在哪里可以找到目标文件以及在哪个目录下,其中包含printf函数的定义。我不是在寻找包含原型的头文件,而是包含实际定义的目标文件。

2 个答案:

答案 0 :(得分:4)

您在寻找目标文件还是源文件?

.o对象文件存储在库libc.so中。在大多数Linux发行版上,此文件位于/lib/libc.so。在Ubuntu 11和12上,作为multiarch support的一部分,/ lib的内容已移至/lib/i386-linux-gnu/lib/x86_64-linux-gnu

您可以使用ar(存档)命令获取单个目标文件,该命令用于使用x(提取)选项创建库:

ar x libc.a stdio.o 

但这似乎没有用,所以我猜你真的想要源文件而不是目标文件。为此,您将安装glibc package,其中包含printf.c(调用vprintf,调用vfprintf,其中包含printf的实际代码)。

此来源可以是browsed on Launchpad。它非常复杂,并且延伸超过2000行代码。

答案 1 :(得分:0)

我找到了我前两个问题的确切答案 -

  1. 要列出libc中存在的所有目标文件,我们使用以下命令:

    x86_64系统:$ ar -t /usr/lib/x86_64-linux-gnu/libc.a

    i386系统:$ ar -t /usr/lib/i386-linux-gnu/libc.a

  2. 要找出哪个目标文件包含printf函数,请在/ usr / lib / x86_64-linux-gnu / usr / lib / i386-linux-gnu或目录下运行此命令:

    $ nm -o libc.a | grep -w printf

  3. 仍在努力寻找正确的答案。