Project

General

Profile

Building ROOT from source » History » Version 6

Ole Hansen, 06/29/2018 10:37 PM

1 1 Ole Hansen
h1. Building ROOT from source
2
3 4 Ole Hansen
ROOT 6 uses a build system based on "CMake":https://cmake.org. The build process consists of three steps:
4 1 Ole Hansen
5
# Running @cmake@ with the desired configuration arguments in a "build directory," which is separate form the source directory
6
# Executing @make@ to build the package
7
# Doing @make install@ to copy the relevant subset of sources and generated binaries to the installation directory
8
9 4 Ole Hansen
Step 1. is the most difficult one since one has to pick appropriate configuration options, of which ROOT has many. A description of most options can be found on the relevant "documentation page":https://root.cern/building-root, but be warned that not everything is documented there and that the documentation may even be incorrect/outdated sometimes.
10 1 Ole Hansen
11 4 Ole Hansen
Let us walk through a typical build process:
12
13
# Make sure that your system compiler is at least @gcc 4.8@. It needs to support @C++11@ fully. If you do not have such a compiler, you should upgrade your system, unless you have a lot of patience and skill. On rpm-based Linux distributions, the @gcc-c++@ and @libstdc++@ packages need to be installed. To determine your compiler version, do
14 3 Ole Hansen
<pre>
15
$ g++ --version
16
g++ (GCC) 4.8.5 20150623 (Red Hat 4.8.5-28)
17
...
18
</pre>
19 6 Ole Hansen
# Verify that you have at least CMake version 3.4.3. On some systems, this command may be called @cmake3@. On RHEL7/CentOS 7, @cmake3@ is available from "EPEL":https://fedoraproject.org/wiki/EPEL.
20 1 Ole Hansen
<pre>
21
$ cmake --version
22
cmake version 3.11.1
23
</pre>
24
# Download the ROOT source tarball from the "download page":https://root.cern/downloading-root. Always pick the latest production ("pro") version; it should work even on old platforms.
25
# Unpack the source distribution wherever you like. This will create a subdirectory named "root-<version>".
26
<pre>
27
$ tar xf root_v6.12.06.source.tar.gz
28
$ ls
29
root-6.12.06
30
</pre>
31
# Create and switch to the build directory, for example
32
<pre>
33
$ mkdir -p ~/Develop/BUILD/root
34
$ cd ~/Develop/BUILD/root
35
</pre>
36 5 Ole Hansen
# Now prepare to run @cmake@ to configure ROOT. This step will automatically detect if required dependencies are available. The most important dependencies are bundled with ROOT and are built automatically if they are not detected on the host system. Other dependencies are optional; if not found, the corresponding feature in ROOT is automatically disabled. (Example: MySQL database support.) You will get a functional version of ROOT even without these optional dependencies, so it is not essential to provide them. Getting them installed is best done through your system's package manager. Some obscure dependencies need to be build by hand from source first, which can be very time-consuming. The default CMake configuration  settings are usually sufficent, so the main item to decide on is the installation path:
37 1 Ole Hansen
<pre>
38 5 Ole Hansen
$ cmake -DCMAKE_INSTALL_PREFIX=<path-to-where-you-want-ROOT-to-be-installed> <path-to-unpacked-ROOT-source>
39 1 Ole Hansen
</pre>
40 4 Ole Hansen
This will run for a minute or two, searching for available libraries on your system.
41
# Once done, start building ROOT as follows:
42
<pre>
43
$ cmake --build . -- -jN
44
</pre>
45
where you should replace "N" with the number of CPU cores in your system. Now go have a coffee … the compilation may take anywhere from 15 minutes to several hours.
46 6 Ole Hansen
# Hopefully, the build process completes without error. If not, there could be many reasons why things failed. If it appears that some library was not found or not properly recognized, try turning the corresponding feature off and go back to step 6. If the error appears obscure to you, ask an expert, for example on the "ROOT forum":https://root-forum.cern.ch.
47 4 Ole Hansen
# Once you manage to build ROOT without error, congratulations. Now install it in your chosen destination directory (the CMAKE_INSTALL_PREFIX you indicated in the configuration step):
48
<pre>
49
$ cmake --build . --target install
50
</pre>
51
Then run the @thisroot.sh@ setup script form the installation location and test ROOT, as described in [[ROOT Installation Guide#Testing your installation|Testing the installation]].