On 08/21/2017 09:06 AM, Kushal Kumaran wrote: > Dutch Ingraham <[email protected]> writes: > >> Hi everyone - >> >> It seems Debian has moved some header directories, like /usr/include/bits >> (and >> sys, and asm, etc.) from /usr/include/ to, e.g., >> /usr/include/i386-linux-gnu/bits/ >> (arch-specific). >> >> My first question is: Why? >> > This is so that headers that are architecture independent are separated > from headers with are architecture dependent. Specifically, that they > are available at different paths. This lets you install the headers > (and libraries) for different architectures simultaneously, which is > essential for debian's multiarch support. Thanks for the response. Since both you and Tomas are saying the same thing, maybe I'm not understanding something. For example, Fedora (and Gentoo, etc. ) also installs glibc for both 32- and 64-bit on the same machine, but they have not relocated these header files. So are you saying this was just Debian's method of solving the multi-arch issue, and other distributions solved in some other way? > >> My second question is: How does this work? There are no symlinks, yet a file >> like /usr/include/signal.h, has the standard "#include <bits/sigset.h>", yet >> that path does not exist with the change noted above. So how is this file >> included? >> >> Any enlightenment is appreciated. > There are several directories configured for searching header files. > The command "gcc -xc -E -v - < /dev/null" will print those paths out. > For my system, the directories are: > > /usr/lib/gcc/x86_64-linux-gnu/6/include > /usr/local/include > /usr/lib/gcc/x86_64-linux-gnu/6/include-fixed > /usr/include/x86_64-linux-gnu > /usr/include > > The list will be different for you because you appear to be running > i386. I'm not seeing some of these paths in vanilla gcc. Does this mean Debian patched gcc as well to add the "Debian" path of /usr/include/x86_64-linux-gnu/ ?
Thanks again to you and Tomas for your responses.

