aboutsummaryrefslogtreecommitdiffstats
path: root/chapter05/kernel-exp-headers.xml
blob: 412cfaacc64846802b3f51f83341607c460efdca (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<sect2>
<title>Why we copy the kernel headers and don't symlink them</title>

<para>In the past, it was common practise for people to symlink the
/usr/include/linux and asm directories to /usr/src/linux/include/linux
and asm respectively.  This is a <emphasis>bad</emphasis> idea as 
this 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_ 
time. But those headers were what glibc was compiled against, so those 
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 relevant part here is where he states that the headers should
be the ones which <emphasis>glibc was compiled against</emphasis>.  These are 
the headers which should remain accessible and so by copying them, we ensure
that we follow these guidelines.  Also note that as long as you don't have 
those symlinks, it is perfectly alright to have the kernel sources 
in <filename>/usr/src/linux</filename>.</para>

</sect2>