summaryrefslogtreecommitdiff
path: root/INSTALL
blob: 85a839f11ae4cd50855349b518116df2464fe382 (plain)
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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
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

For the btrfs-convert utility:

- e2fsprogs - ext2/ext3/ext4 file system libraries, or called e2fslibs

Generating documentation:

- asciidoc - text document format tool
- xmlto - text document format tool

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

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.

 $ make EXTRA_CFLAGS=-ggdb3

The build utilizes autotools, dependencies for generating the configure
scripts are:

* autconf, autoheader
* automake, aclocal
* pkg-config


Staticly 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 static binaries have the '.static' suffix, the intermediate object
files do not conflict with the normal (dynamic) build.


References:
* https://btrfs.wiki.kernel.org