-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 On Mon, Aug 21, 2017 at 02:12:05PM -0500, Dutch Ingraham wrote: > On 08/21/2017 09:06 AM, Kushal Kumaran wrote: > > Dutch Ingraham <s...@gmx.us> 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?
Exactly. In RH, the "default" is under /usr/lib, /usr/include, in Debian, there's for every installed architecture /usr/*/$ARCH. This provides an uniform structure, independent of the "default" arch. The change is a bit more difficult, but the result is cleaner, as far as I understand. This eases co-installing cross compilers for other architectures too, > >> 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/ ? I think it is a configuration option when building gcc and friends. Cheers - -- tomás -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.12 (GNU/Linux) iEYEARECAAYFAlmbOqYACgkQBcgs9XrR2kaLfgCfQFrgdJMoQILmwppzdtVNRWWx /14An3zfOdkFainyDcyaCUws9Qfrsmmr =IGz4 -----END PGP SIGNATURE-----