summaryrefslogtreecommitdiffstats
path: root/Documentation/howto-compilation.txt
blob: 4b392461d49a2c779c5d302d524bc1c2ce68e080 (plain) (blame)
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
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
The common case

	./autogen.sh && ./configure && make

	If something fails read the last lines. Typical reason to
	fail is a missing dependency, such as libtool or gettext.

Autotools

	`./autogen.sh' generates all files needed to compile
	and install the code (run it after checkout from git)

	`make distclean' removes all unnecessary files, but the
	code can still be recompiled with "./configure; make"

	`make dist-gzip' (or -bzip2) creates a tarball that can
	be configured and compiled without running `./autogen.sh'

Compiling

	Use SUID_CFLAGS and SUID_LDFLAGS when you want to define
	special compiler options for typical suid programs, for
	example:

	./configure SUID_CFLAGS="-fpie" SUID_LDFLAGS="-pie"

	The SUID_* feature is currently supported for chfn, chsh,
	newgrp, su, write, mount, and umount.

	Use DAEMON_CFLAGS and DAEMON_LDFLAGS when you want to define
	special compiler options for daemons; supported for uuidd.

	Use SOLIB_CFLAGS and SOLIB_LDFLAGS when you want to define
	special compiler options for shared libraries; supported for
	libmount, libblkid and libuuid.

	FIXME: add notes about klib and uClib.

Static linking

	Use --enable-static-programs[=LIST] configure option when
	you want to use statically linked programs.

	Note, mount(8) uses get{pw,gr}nam() and getpwuid()
	functions for translation from username and groupname to
	UID and GID. These functions could be implemented by
	dynamically loaded independent modules (NSS) in your libc
	(e.g. glibc). These modules are not statically linked to
	mount(8) and mount.static is still using dlopen() like
	dynamically linked version.

	The translation won't work in environment where NSS
	modules are not installed.

	For example normal system (NSS modules are available):

		# ./mount.static -v -f -n -ouid=kzak /mnt/foo
		LABEL=/mnt/foo on /mnt/foo type vfat (rw,uid=500)
							 ^^^^^^^
	and without NSS modules:

		# chroot . ./mount.static -v -f -n -ouid=kzak /mnt/win
		LABEL=/mnt/win on /mnt/win type vfat (rw,uid=kzak)
							 ^^^^^^^^