stdio.o在linux机器上居住在哪里?

我正在尝试手动执行我的程序的所有编译步骤。 在我使用链接器命令ld的最后一个步骤中,我需要指定库的对象文件(stdio,因为我已经在我的代码中使用了printf),那么只有make和.exe文件。 这个目标文件驻留在哪里?

Solutions Collecting From Web of "stdio.o在linux机器上居住在哪里?"

我建议你运行gcc -v your_file.c 。 这将让你看到你的链接器正在使用什么命令。 你可能没有stdio.o文件来链接。 相反,它包含在C运行时库中,确切的文件将取决于您的系统配置。

stdio是C标准库的一部分。 标准库的确切位置是系统特定的,但它通常位于一个名为libc.a或libc.so的文件中。

在我的机器中可以找到:

 /usr/lib/x86_64-linux-gnu/libc.a /usr/lib/x86_64-linux-gnu/libc.so 

您可以要求ld搜索目录: ld --verbose | grep SEARCH_DIR ld --verbose | grep SEARCH_DIR

libc.a是一个ar ( man )压缩文件,您可以使用ar命令从libc.a压缩文件中提取stdio.o

 $ # list archive member with `ar t` $ ar t /usr/lib/x86_64-linux-gnu/libc.a | grep ^stdio stdio.o $ # extract stdio.o with `ar x` $ ar x /usr/lib/x86_64-linux-gnu/libc.a stdio.o 

它可能是根源

类似于/usr/lib/usr/lib***