LDP/LDP/retired/LFS/chapter06/kernel-exp-headers.xml

43 lines
2.0 KiB
XML
Raw Normal View History

2003-11-06 15:49:30 +00:00
<sect2><title>&nbsp;</title><para>&nbsp;</para></sect2>
2002-10-07 16:13:07 +00:00
<sect2>
<title>Why we copy the kernel headers and don't symlink them</title>
<para>In the past it was common practice to symlink the
<filename class="directory">/usr/include/{linux,asm}</filename> directories
to <filename class="directory">/usr/src/linux/include/{linux,asm}</filename>.
This was a <emphasis>bad</emphasis> practice, as the following extract from a
post by Linus Torvalds to the Linux Kernel Mailing List points out:</para>
<screen>I would suggest that people who compile new kernels should:
- not have a single symbolic link in sight (except the one that the
kernel build itself sets up, namely the "linux/include/asm" symlink
that is only used for the internal kernel compile itself)
And yes, this is what I do. My /usr/src/linux still has the old 2.2.13
header files, even though I haven't run a 2.2.13 kernel in a _loong_
2003-11-06 15:49:30 +00:00
time. But those headers were what Glibc was compiled against, so those
2002-10-07 16:13:07 +00:00
headers are what matches the library object files.
And this is actually what has been the suggested environment for at
least the last five years. I don't know why the symlink business keeps
on living on, like a bad zombie. Pretty much every distribution still
has that broken symlink, and people still remember that the linux
sources should go into "/usr/src/linux" even though that hasn't been
true in a _loong_ time.</screen>
<para>The essential part is where Linus states that the header files should be
2003-11-06 15:49:30 +00:00
<emphasis>the ones which Glibc was compiled against</emphasis>. These are
2002-10-07 16:13:07 +00:00
the headers that should be used when you later compile other packages, as they
are the ones that match the object-code library files. By copying the headers,
we ensure that they remain available if later you upgrade your kernel.</para>
<para>Note, by the way, that it is perfectly all right to have the kernel sources
in <filename class="directory">/usr/src/linux</filename>, as long as you don't
have the <filename class="directory">/usr/include/{linux,asm}</filename>
symlinks.</para>
</sect2>