summaryrefslogtreecommitdiffstats
path: root/Documentation/howto-compilation.txt
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 14:30:35 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-07 14:30:35 +0000
commit378c18e5f024ac5a8aef4cb40d7c9aa9633d144c (patch)
tree44dfb6ca500d32cabd450649b322a42e70a30683 /Documentation/howto-compilation.txt
parentInitial commit. (diff)
downloadutil-linux-378c18e5f024ac5a8aef4cb40d7c9aa9633d144c.tar.xz
util-linux-378c18e5f024ac5a8aef4cb40d7c9aa9633d144c.zip
Adding upstream version 2.38.1.upstream/2.38.1upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'Documentation/howto-compilation.txt')
-rw-r--r--Documentation/howto-compilation.txt90
1 files changed, 90 insertions, 0 deletions
diff --git a/Documentation/howto-compilation.txt b/Documentation/howto-compilation.txt
new file mode 100644
index 0000000..6a86b30
--- /dev/null
+++ b/Documentation/howto-compilation.txt
@@ -0,0 +1,90 @@
+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.
+
+ make install-strip
+
+ Note that on the production systems it is strongly recommended to use
+ "make install-strip" to install binaries and libraries. The result
+ from the standard "make install" may produce large binaries with
+ unnecessary symbols.
+
+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)
+ ^^^^^^^^