Ubuntu下ROOT的安装及遇到的问题[190918更新]

2019.09.18更新

ROOT更新了cmake的安装方式,原来的configure/make方式仍然可以使用,但不支持某些新特性(详见ROOT building-introduction)。所以更新本贴,记录采用 “CMake编译源码的方式” 安装ROOT的过程,直接下载Binary distributions 的方式比较简单,可以自行摸索(前往ROOT官网下载对应系统版本的binary包解压即可)。

  1. 首先,依然是前往ROOT-download下载Source distribution,解压到指定文件夹(本文路径为~/Softwares/root_v6.18.04.source/root-6.18.04)。

  2. 因为采用CMake方式,需要先安装CMake。Ubuntu可以在终端输入cmake --version来检查是否已经安装了cmake,如果没有安装,可以在终端输入sudo apt-get install cmake来自动安装,但此方式在Ubuntu16.04LTS等老版本系统下可能安装的cmake版本过老,编译ROOT时会报错(要求好像是3.6.5以上)。此时可以在CMake官网查询最新版本,参考该网页来安装最新版本。如果网页中指南的wget方式下载过慢,也可以手动从cmake网页下载,然后参考以上网页配置安装,注意网页中指南是下载的对应版本的二进制包(比如cmake-3.15.3-Linux-x86_64.tar.gz),如果下载source源码,可以参考下载文件夹内的readme自行编译安装。

  3. 同样,编译前也需要安装必备软件包,列表可以在这里找到

1
2
sudo apt-get install git dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev \
libxft-dev libxext-dev
  1. 开始编译,编译过程可以参考ROOT-building文档
  • 先cd到你想安装root的目标目录,本文将其与源码放在一起了
1
cd ~/Softwares/root_v6.18.04.source/root-6.18.04
  • 创建build目录,如果不创建一个新文件夹,cmake时会报错提示创建一个干净的目录用来编译
1
2
mkdir builddir
cd builddir
  • 在builddir目录下执行cmake检查cmake path/to/source,对于本文目录命令为
1
cmake ~/Softwares/root_v6.18.04.source/root-6.18.04
  • cmake通过后,即可以开始编译了(j4表示使用4核心,可以随计算机配置改变)
1
make -j4
  • 编译完成后,source修改环境变量,然后就可以使用root命令来启用ROOT环境了
1
2
3
source bin/thisroot.sh
root
.q [退出root]

若不想每次都在终端输入source环境变量,可以参照文末方法添加系统环境变量。


2017.10.25更新:

给小室长也新装了Ubuntu 17.10系统,同样也安装ROOT,从官网下载ROOT二进制包,直接运行会报错(缺这缺那的,iostream都缺…),而下载源码编译,安装必要库之后,make编译进行1-2分钟后会报错如下:
lz4报错
提示和lz4压缩算法库有关,那个github页面已经打不开了…百度lz4-1.7.5,搜到关于lz4压缩算法的页面(https://fossies.org/linux/misc/legacy/lz4-1.7.5.tar.gz/), 下载,放到提示的/root-6.10.08/core/lz4/src/下,提取解压,然后cd到提出出的/lz4-1.7.5/这个文件夹,make一下…
再回到root文件下,继续 make -j8 ,就可以继续编译了…
8核全开的感觉真好

然而后面还会出来 fPIC 动态库链接错误问题,虽然提示 recompile with -fPIC,但再makefile文件一堆命令,哪些需要添加这个参数呢阿…之前别的程序也出现,查了许多,一直不知道怎么解决(我并不是一个专业的程序员啊,为什么要我解决程序员的问题,他们别人用root难道没有这个问题么,出去会发现,他们都用苹果[掩面])…
最后的链结失败:错误的值 recompile with -fPIC


以下为 2017-04-26 21:13:15 原文:

cern.root.ch

ROOT是CERN主导开发一个数据分析的环境框架,可以有效处理海量数据,并且现在搭配许多软件、插件也可以实现许多物理过程的模拟到结果输出。

简单记录下在Linux系统下安装ROOT 6.0x的过程:

  1. 首先在ROOT网站:https://root.cern.ch找到Download下载,目前ROOT的有3种Releases: Pro、Dev、Old,推荐首选Pro的稳定版本;
  2. 然后点击对应版本进入下载页面,虽然ROOT提供了许多对应系统的编译好的“二进制包”,但推荐还是选择下载最上方的“源码”,然后本地编译使用(如果下载二进制包的话,解压后,双击./bin/root就应该可以用了,但八成会有各种问题);
    ROOT下载页面
  3. 下载得到“root_v6.09.02.source.tar.gz”后,直接右键提取,然后在终端中cd到解压得到的文件夹准备编译(我将其提取到了自己建立的 ~/Softwares 文件夹下):
    终端执行:
1
./configure

该命令会检查所需的库文件等…一般都会缺很多必要的库,这时需要到https://root.cern.ch/build-prerequisites查询安装必要的库,对于Ubuntu,可以简单的直接在终端运行:

1
2
sudo apt-get install git dpkg-dev cmake g++ gcc binutils libx11-dev libxpm-dev \
libxft-dev libxext-dev

来安装所需的基本库,其它库可自行查看页面安装;

  1. 安装完所需库后,再运行
1
Softwares/root-6.08.06/configure

当最后没有报错后,出现"可以运行make来build"的提示时,就可以在终端输入:

1
make -j4

来编译了,其中"-j4"是指用4个核心编译,速度较快,当然如果有8核心或者8线程的cpu的话也可以试试-j8;

  1. 漫长的等待后,如果没有报错就算编译完成了,此时还不能顺利运行ROOT,需要在终端中输入环境变量:
1
source ~/Softwares/root-6.08.06/bin/thisroot.sh

然后就可以在终端直接输入:

1
root

来启动root环境了~
如果不想每次打开终端都需要输入source环境变量,则需要在系统环境变量中添加对应的环境变量,Ubuntu的系统环境变量配置文件".profile"位于home主文件夹下(Ubuntu按crtl+H可以显示隐藏文件),打开后,在最后添加:

1
2
3
export ROOTSYS=$HOME/Softwares/root-6.08.06
export PATH=$ROOTSYS/bin:$PATH
export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH

以后只要打开终端,输入root就可以启动ROOT环境啦~
对了,对于初学者,在ROOT环境下退出是 .q 哦~