Headers

Jim Gifford lfs at jg555.com
Mon Apr 17 20:24:34 PDT 2006


Here it is right from the INSTALL file itself.


Specific advice for GNU/Linux systems
=====================================

If you are installing GNU libc on a GNU/Linux system, you need to have
the header files from a 2.2 or newer kernel around for reference.  For
some architectures, like ia64, sh and hppa, you need at least headers
from kernel 2.3.99 (sh and hppa) or 2.4.0 (ia64).  You do not need to
use that kernel, just have its headers where glibc can access at them.
The easiest way to do this is to unpack it in a directory such as
`/usr/src/linux-2.2.1'.  In that directory, run `make config' and
accept all the defaults.  Then run `make include/linux/version.h'.
Finally, configure glibc with the option
`--with-headers=/usr/src/linux-2.2.1/include'.  Use the most recent
kernel you can get your hands on.

   An alternate tactic is to unpack the 2.2 kernel and run `make
config' as above; then, rename or delete `/usr/include', create a new
`/usr/include', and make symbolic links of `/usr/include/linux' and
`/usr/include/asm' into the kernel sources.  You can then configure
glibc with no special options.  This tactic is recommended if you are
upgrading from libc5, since you need to get rid of the old header files
anyway.

   After installing GNU libc, you may need to remove or rename
`/usr/include/linux' and `/usr/include/asm', and replace them with
copies of `include/linux' and `include/asm-$ARCHITECTURE' taken from
the Linux source package which supplied kernel headers for building the
library.  ARCHITECTURE will be the machine architecture for which the
library was built, such as `i386' or `alpha'.  You do not need to do
this if you did not specify an alternate kernel header source using
`--with-headers'.  The intent here is that these directories should be
copies of, *not* symlinks to, the kernel headers used to build the
library.

   Note that `/usr/include/net' and `/usr/include/scsi' should *not* be
symlinks into the kernel sources.  GNU libc provides its own versions
of these files.

   GNU/Linux expects some components of the libc installation to be in
`/lib' and some in `/usr/lib'.  This is handled automatically if you
configure glibc with `--prefix=/usr'.  If you set some other prefix or
allow it to default to `/usr/local', then all the components are
installed there.

   If you are upgrading from libc5, you need to recompile every shared
library on your system against the new library for the sake of new code,
but keep the old libraries around for old binaries to use.  This is
complicated and difficult.  Consult the Glibc2 HOWTO at
`http://www.imaxx.net/~thrytis/glibc <http://www.imaxx.net/%7Ethrytis/glibc>' for details.

   You cannot use `nscd' with 2.0 kernels, due to bugs in the
kernel-side thread support.  `nscd' happens to hit these bugs
particularly hard, but you might have problems with any threaded
program.




More information about the cross-lfs mailing list