About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog

Documentation / make / headers_install.txt


Based on kernel version 3.16. Page generated on 2014-08-06 21:40 EST.

1	Exporting kernel headers for use by userspace
2	=============================================
3	
4	The "make headers_install" command exports the kernel's header files in a
5	form suitable for use by userspace programs.
6	
7	The linux kernel's exported header files describe the API for user space
8	programs attempting to use kernel services.  These kernel header files are
9	used by the system's C library (such as glibc or uClibc) to define available
10	system calls, as well as constants and structures to be used with these
11	system calls.  The C library's header files include the kernel header files
12	from the "linux" subdirectory.  The system's libc headers are usually
13	installed at the default location /usr/include and the kernel headers in
14	subdirectories under that (most notably /usr/include/linux and
15	/usr/include/asm).
16	
17	Kernel headers are backwards compatible, but not forwards compatible.  This
18	means that a program built against a C library using older kernel headers
19	should run on a newer kernel (although it may not have access to new
20	features), but a program built against newer kernel headers may not work on an
21	older kernel.
22	
23	The "make headers_install" command can be run in the top level directory of the
24	kernel source code (or using a standard out-of-tree build).  It takes two
25	optional arguments:
26	
27	  make headers_install ARCH=i386 INSTALL_HDR_PATH=/usr/include
28	
29	ARCH indicates which architecture to produce headers for, and defaults to the
30	current architecture.  The linux/asm directory of the exported kernel headers
31	is platform-specific, to see a complete list of supported architectures use
32	the command:
33	
34	  ls -d include/asm-* | sed 's/.*-//'
35	
36	INSTALL_HDR_PATH indicates where to install the headers.  It defaults to
37	"./usr/include".
38	
39	The command "make headers_install_all" exports headers for all architectures
40	simultaneously.  (This is mostly of interest to distribution maintainers,
41	who create an architecture-independent tarball from the resulting include
42	directory.)  You also can use HDR_ARCH_LIST to specify list of architectures.
43	Remember to provide the appropriate linux/asm directory via "mv" or "ln -s"
44	before building a C library with headers exported this way.
45	
46	The kernel header export infrastructure is maintained by David Woodhouse
47	<dwmw2@infradead.org>.
Hide Line Numbers


About Kernel Documentation Linux Kernel Contact Linux Resources Linux Blog