mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/kdave/btrfs-progs.git
synced 2024-11-24 12:44:17 +08:00
1d0fa3781e
Previously the build would be optional based on what is installed on the system. Add an option to make this selectable by user, ie. to allow build without libudev even if it is installed on the system. For most users and distros libudev dependency should be ok, but we've had requests to disable various features (embedded, systems with non-systemd user space base system) so let's do the same. Signed-off-by: David Sterba <dsterba@suse.com>
131 lines
3.6 KiB
Plaintext
131 lines
3.6 KiB
Plaintext
Installation instructions
|
|
=========================
|
|
|
|
The Btrfs utility programs require the following libraries/tools to build:
|
|
|
|
- libuuid - provided by util-linux, e2fsprogs/e2fslibs or libuuid
|
|
- libblkid - block device id library
|
|
- liblzo2 - LZO data compression library
|
|
- zlib - ZLIB data compression library
|
|
- libzstd - ZSTD data compression library version >= 1.0.0
|
|
|
|
For the btrfs-convert utility:
|
|
|
|
- e2fsprogs - ext2/ext3/ext4 file system libraries, or called e2fslibs
|
|
- libreiserfscore - reiserfs file system library version >= 3.6.27
|
|
|
|
Optionally, the checksums based on cryptographic hashes can be implemented by
|
|
external libraries. Builtin implementations are provided in case the library
|
|
dependencies are not desired.
|
|
|
|
- libgcrypt
|
|
- libsodium
|
|
- libkcapi
|
|
|
|
Optionally, multipath device detection requires libudev and running udev
|
|
daemon, as it's the only source of the path information. Static build has a
|
|
fallback and does not need static version of libudev.
|
|
|
|
- libudev
|
|
|
|
For zoned device support, the system headers installed in /usr/include/linux
|
|
must be 5.10 or newer.
|
|
|
|
Generating documentation:
|
|
|
|
- asciidoc - text document format tool
|
|
- xmlto - text document format tool
|
|
- source-highlight - optional, only for generating HTML output
|
|
|
|
XATTR library should be provided by the standard C library or by
|
|
|
|
- libattr - extended attribute library
|
|
|
|
Please note that the package names may differ according to the distribution.
|
|
See https://btrfs.wiki.kernel.org/index.php/Btrfs_source_repositories#Dependencies .
|
|
|
|
|
|
Building from sources
|
|
---------------------
|
|
|
|
To build from git sources you need to generate the configure script using the
|
|
autotools:
|
|
|
|
$ ./autogen.sh
|
|
|
|
To build from the released tarballs:
|
|
|
|
$ ./configure
|
|
$ make
|
|
$ make install
|
|
|
|
To install the libbtrfsutil Python bindings:
|
|
|
|
$ make install_python
|
|
|
|
You may disable building some parts like documentation, btrfs-convert or
|
|
backtrace support. See ./configure --help for more.
|
|
|
|
Specific CFLAGS or LDFLAGS should be set like
|
|
|
|
$ CFLAGS=... LDFLAGS=... ./configure --prefix=/usr
|
|
|
|
and not as arguments to make. You can specify additional flags to build via
|
|
variables EXTRA_CFLAGS and EXTRA_LDFLAGS that get appended to the predefined
|
|
values of the respective variables. There are further build tuning options
|
|
documented in the Makefile.
|
|
|
|
$ make EXTRA_CFLAGS=-ggdb3
|
|
|
|
The build utilizes autotools, dependencies for generating the configure
|
|
scripts are:
|
|
|
|
* autoconf, autoheader
|
|
* automake, aclocal
|
|
* pkg-config
|
|
|
|
|
|
Statically built binaries
|
|
-------------------------
|
|
|
|
The makefiles are ready to let you build static binaries of the utilities. This
|
|
may be handy in rescue environments. Your system has to provide static version
|
|
of the libraries.
|
|
|
|
$ make static
|
|
$ make btrfs.static
|
|
$ make btrfs-convert.static
|
|
|
|
The resulting binaries have the '.static' suffix, the intermediate object
|
|
files do not conflict with the normal (dynamic) build.
|
|
|
|
|
|
All-in-one binary (busybox style)
|
|
---------------------------------
|
|
|
|
Since version 5.2 it's possible to build a single binary that can act as other
|
|
standalone tools, based on the file name:
|
|
|
|
$ make btrfs.box
|
|
$ mv btrfs.box btrfs
|
|
$ ln -s btrfs mkfs.btrfs
|
|
|
|
The list of built-ins can be obtained by
|
|
|
|
$ btrfs help --box
|
|
|
|
The basic set will always contain: mkfs.btrfs, btrfs-image, btrfs-convert.
|
|
|
|
|
|
32bit build on 64bit host
|
|
-------------------------
|
|
|
|
The combination of 32bit build on 64bit host could work but depends on the
|
|
libraries that must provide the 32bit versions, or even 32bit static versions.
|
|
This is fairly uncommon on contemporary distributions and building 32bit
|
|
versions on a 32bit host is recommended.
|
|
|
|
|
|
References:
|
|
* https://btrfs.wiki.kernel.org
|