summaryrefslogtreecommitdiffstats
path: root/Documentation/howto-compilation.txt
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--Documentation/howto-compilation.txt83
1 files changed, 83 insertions, 0 deletions
diff --git a/Documentation/howto-compilation.txt b/Documentation/howto-compilation.txt
new file mode 100644
index 0000000..5ae3310
--- /dev/null
+++ b/Documentation/howto-compilation.txt
@@ -0,0 +1,83 @@
+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.
+
+
+Compile certain portion
+
+ See ./configure --help and use --disable-* and --enable-* options.
+
+ It's also possible to disable all the programs and enable only wanted.
+ For example:
+
+ ./configure --disable-all-programs --enable-fallocate
+
+ Note that the configure script tracks dependencies between libs and
+ tools. Always see warning messages and follow error messages if any
+ dependence is necessary. For example to compile mount(8) you need also
+ libmount, libblkid and libuuid:
+
+ ./configure --disable-all-programs --enable-mount --enable-libmount \
+ --enable-libblkid --enable-libuuid
+
+
+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)
+ ^^^^^^^^