btrfs-progs/INSTALL
David Sterba eb84891443 btrfs-progs: build: note about 32bit build on 64bit host
Notes for making it work:

- "CFLAGS=-m32 LDFLAGS=-m32 ./configure ..." passes the right flags
  everywhere, otherwise just passing it by EXTRA_CFLAGS/EXTRA_LDFLAGS
  might miss some binaries or libraries

- note that passing CFLAGS/LDFLAGS to configure will override the
  default flags

- libbtrfsutil and python bindings require to pass the -m32 flags via
  EXTRA_PYTHON_CFLAGS/EXTRA_PYTHON_LDFLAGS

- all the e2fsprogs, zlib, lzo, util-linux etc need packaging changes to
  provide static libraries - usually frowned upon by distribution unless
  justified, even less so for static + 32bit versions, very niche
  use case

Signed-off-by: David Sterba <dsterba@suse.com>
2021-03-24 22:20:19 +01:00

122 lines
3.3 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
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