title: Why is stddef.h not in /usr/include?
body: <p>I have compiled the gnu standard library and installed it in <code>$GLIBC_INST</code>.</p>
  
  <p>Now, I try to compile a <em>very</em> simple programm (using only one #include : <code>#include &lt;stdio.h&gt;</code>):</p>
  
  <pre><code>gcc --nostdinc -I$GLIBC_INST/include foo.c
  </code></pre>
  
  <p>The compilation (preprocessor?) tells me, that it doesn't find <code>stddef.h</code>.</p>
  
  <p>And indeed, there is none in <code>$GLIBC_INST/include</code> (nor is there one in <code>/usr/include</code>). However, I found a <code>stddef.h</code> in <code>/usr/lib/gcc/x86_64-unknown-linux-gnu/5.3.0/include</code>.</p>
  
  <p>Why is that file not under <code>/usr/include</code>? I thought it belonged to the standard c library and should be installed in <code>$GLIBC_INST/include</code>.</p>
  
  <p>How can I compile my <code>foo.c</code> with the newly installed standard library when it doesn't seem to come with a <code>stddef.h</code>?</p>
  
  <p><strong>Edit: Clarification</strong></p>
  
  <p>I feel that the title of this question is not optimal. As has been pointed out by some answers, there is not a requirement for <code>stddef.h</code> to be in <code>/usr/include</code> (or <code>$GLIBC_INST/include</code>, for that matter). I do understand that.</p>
  
  <p>But I am wondering how I can proceed when I want to use <code>$GLIBC_INST</code>. It seems obvious to me (although I might be wrong here) that I need to invoke gcc with <code>--nostdinc</code> in order to not use the system installed header files.
  This entails that I use <code>-I$GLIB_INST/include</code>. This is clear to me.</p>
  
  <p>Yet, what remains unclear to me is: when I also add <code>-I/usr/lib/gcc/x86..../include</code>, how can I be sure that I do have in fact the newest header files for the freshly compiled glibc?</p>