我已经编译了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
。对我来说似乎很明显(尽管我可能在这里错了),我需要调用gcc--nostdinc
才能不使用系统安装的头文件。这需要我使用-I$GLIB_INST/include
。这对我来说很清楚。
但是,对我来说还不清楚的是:当我还添加时-I/usr/lib/gcc/x86..../include
,如何确定我确实具有刚编译的glibc的最新头文件?
这是因为下面的文件/usr/include
是C库提供的公共头文件,例如glibc
,而文件at/usr/lib/gcc
是特定于该特定编译器的。通常每个编译器都有各自不同的实现stddef.h
,但是stdio.h
当链接到已安装的C库时,它们将使用相同的实现。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句