Ren*_*ger 6 c gcc c-preprocessor
我编译了gnu标准库并将其安装在$GLIBC_INST.
现在,我尝试编译一个非常简单的程序(只使用一个#include :) #include <stdio.h>:
gcc --nostdinc -I$GLIBC_INST/include foo.c
Run Code Online (Sandbox Code Playgroud)
编译(预处理器?)告诉我,它没有找到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文件,而文件/usr/lib/gcc是特定于该特定编译器的文件.通常每个编译器都有自己不同的实现stddef.h,但是stdio.h当链接到已安装的C库时,它们将使用相同的实现.
| 归档时间: |
|
| 查看次数: |
9369 次 |
| 最近记录: |