gpt4 book ai didi

c - 为什么stddef.h 不在/usr/include 中?

转载 作者:太空狗 更新时间:2023-10-29 17:17:11 41 4
gpt4 key购买 nike

我编译了gnu标准库并安装在$GLIBC_INST中.

现在,我尝试编译一个非常简单的程序(只使用一个#include : #include <stdio.h>):

gcc --nostdinc -I$GLIBC_INST/include foo.c

编译(预处理器?)告诉我,它没有找到 stddef.h .

事实上,$GLIBC_INST/include 中没有(/usr/include 中也没有)。然而,我发现了一个 stddef.h/usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/include .

为什么那个文件不在 /usr/include 下?我以为它属于标准c库,应该安装在$GLIBC_INST/include .

如何编译我的 foo.c使用新安装的标准库时它似乎没有附带 stddef.h

编辑:澄清

感觉这个题的题目不是最优的。正如一些答案所指出的那样,不需要 stddef.h/usr/include (或 $GLIBC_INST/include ,就此而言)。我明白这一点。

但我想知道当我想使用 $GLIBC_INST 时如何继续.对我来说很明显(虽然我在这里可能是错的)我需要用 --nostdinc 调用 gcc为了不使用系统安装的头文件。这意味着我使用 -I$GLIB_INST/include .这对我来说很清楚。

然而,我仍然不清楚的是:当我还添加 -I/usr/lib/gcc/x86..../include 时,我如何确定我确实拥有新编译的 glibc 的最新头文件?

最佳答案

这是因为/usr/include下的文件是C库提供的通用头文件,例如glibc,而/usr/下的文件lib/gcc 特定于该特定编译器。每个编译器都有自己不同的 stddef.h 实现是很常见的,但是当链接到已安装的 C 库时,它们将使用相同的 stdio.h

关于c - 为什么stddef.h 不在/usr/include 中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37158651/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com