The preferred way to install root is from source and with *cmake*. The installation from source might not be necessary but is necessary for example if extra libraries (such as GQt for the FACT++ GUI) are required.

First download the source tar-ball from (The version in the following is just an example, names and places are just suggestions)

[0] tar xvfz root_v6.14.04.source.tar.gz      # Extract the tar file 
[1] mv root-6.14.04 root-6.14.04-src          # Rename the source directory (for convenience)
[2] mkdir root-6.14.04-build                  # Create a build directory
[3] cd root-6.14.04-build                     # Change into the build directory
[4] cmake ../root-6.14.04-src                 # Create the build environment
[5] make                                      # Make root (might take an hour or more!)
[6] make package                              # Create a tar-ball
[7] cd ..                                     # Up by one level
[8] tar xvfz root-6.14.04-build/root_v6.14.04.<something>.tar.gz # Extract the tar-ball
[9] mv root root-6.14.04                      # Rename the binary directory (for convenience)
[10] . root-6.14.04/bin/           # Properly setup your environment

# Now you can remove source and build directory or keep it for future use
[10] rm -rf root-6.14.04-src                  
[11] rm -rf root-6.14.04-build                to keep it

You might want to call cmake to set up the build environment with a different (e.g. faster) compiler like clang:

[4] cmake -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ../root-6.14.04-src

More details on supported flags can be found at:

To force the compilation of the GQt module

[4] cmake -Dqt=ON ../root-6.14.04-src

This option is *not* supported anymore in root 6.18. No solution for this exists by now. If you really need it (required to compile the FACT++ online GUI), you must not use this root version by now!

Note that if you run root from its build directory (not recommended!), root (6.14) need RootNewMacros.cmake during compilation of derived projects which is (only) located in the source directory. Therefore, you must not remove or change the name of the source directory. I hope that will be fixed in the future.

Font size

Lately, on modern screens, the default GUI fonts of root (10 and 12) are exceptionally small. They can be changed by adding the following lines to your .rootrc. As root is always using the one in your home directory additionally, it is advisable to add these lines to your global .rootrc.

Gui.DefaultFont:            -*-helvetica-*-r-*-*-18-*-*-*-*-*-iso8859-1
Gui.MenuFont:               -*-helvetica-*-r-*-*-18-*-*-*-*-*-iso8859-1
Gui.MenuHiFont:             -*-helvetica-bold-r-*-*-18-*-*-*-*-*-iso8859-1
Gui.DocFixedFont:           -*-courier-*-r-*-*-18-*-*-*-*-*-iso8859-1
Gui.DocPropFont:            -*-helvetica-*-r-*-*-18-*-*-*-*-*-iso8859-1
Gui.IconFont:               -*-helvetica-*-r-*-*-16-*-*-*-*-*-iso8859-1
Gui.StatusFont:             -*-helvetica-*-r-*-*-16-*-*-*-*-*-iso8859-1


Ubuntu Packages known to be required

  • libxpm-dev
  • libxft-dev

Suggested (speeds up compilation):

  • clang (-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++)
  • llvm-5.0 (-Dbuiltin_llvm=OFF -DLLVM_CONFIG=/usr/bin/llvm-config-5.0)
  • libafterimage-dev (-Dbuiltin_afterimage=OFF)
  • libftgl-dev (-Dbuiltin_ftgl=OFF)
  • libglew-dev (-Dbuiltin_glew=OFF)
  • libz-dev
  • libcfitsio-dev
  • libgl2ps-dev
  • libgsl-dev
  • liblz4-dev
  • liblzma-dev
  • libssl-dev (important see below)
  • libgif-dev
  • libxml2-dev
  • libfftw3-dev
  • libtbb-dev
  • libsqlite-dev
  • libpythia8-dev
  • libblas-dev

If you have a too old version of cmake, you can download binary packages at Usually, it is enough to call cmake with its full path to switch version. So just unpack the tar-ball and call the cmake binary in the package.

The requirements as of now are:

  • root >=6.18: cmake >=3.9
  • root >=6.16: cmake >=3.6
  • root >=6.14: cmake >=3.4.3
  • root >=6.08: cmake >=3.4.3
  • root >=5.24: cmake >=2.8.8

This list is taken from the CMakeList.txt which is no guarantee that it really works.

Note that newer root version might also require newer compilers. (No list available!)

ROOT Problems

We have encountered problems with root 6.18.04 (and most likely others) and some database related FACT++ tools when root compiles its own ssl-library. What happens is that under some cirumstances the system ssl-library jumps into functions compiled by root and the program crashes. A solution is to ensure that root uses the system library instead. This is requested adding -Dbuildin_ssl=OFF to the cmake-call. It should also be enough to ensure that libssl-dev is installed before the call to cmake.

At least root 6.22 has an incompatibility in its build-system (precisely in RootMacros.cmake) with the Mars build system. Either you need to use another root version or you patch RootMacros.cmake like follows:

<     add_custom_target(${dictionary} DEPENDS ${dictionary}.cxx ${pcm_name} ${rootmap_name} ${cpp_module_file})
>     get_filename_component(dictionary_name ${dictionary} NAME)
>     add_custom_target(${dictionary_name} DEPENDS ${dictionary}.cxx ${pcm_name} ${rootmap_name} ${cpp_module_file})
Last modified 2 years ago Last modified on 10/20/20 21:55:18
Note: See TracWiki for help on using the wiki.