genie是使用蒙特卡洛方法模拟中微子物理的现代化软件。具体用途有请罗昊同学讲解。
genie的安装是比较复杂的,关键原因是genie依赖软件包比较多,而且依赖软件包之间存在相互连接的现象。
例如:genie依赖于ROOT,ROOT编译的时候需要链接pythia6之后再编译。
但是安装过程只要一步步来,耐心细心,解决出现的问题,就不难成功安装。
需要的依赖包如下:
-------以下操作均在/opt目录下-------
下载安装包:
wget https://sourceforge.net/projects/log4cpp/files/latest/download
解压:
tar –xvf log4cpp-1.1.3.tar.gz
规范命名:
mv log4cpp-1.1.3 log4cpp-1.1.3-src (-src表示源代码目录)
mkdir log4cpp-1.1.3 (无-src表示安装目录)
编译安装:
cd ../log4cpp-1.1.3-src
./autogen.sh
./configure --prefix=/opt/log4cpp-1.1.3
make
make install
理论上也可以安装log4cpp的办法安装GSL,但是可以直接用apt安装(Debian、Ubuntu)
sudo apt install libgsl-dev
下载安装包:
wget https://lhapdf.hepforge.org/downloads/?f=LHAPDF-6.2.3.tar.gz
解压:
tar –xvf LHAPDF-6.2.3.tar.gz
规范命名:
mv LHAPDF-6.2.3 LHAPDF-6.2.3 -src
mkdir LHAPDF-6.2.3
编译安装:
cd ../ LHAPDF-6.2.3 -src
./configure --prefix=/opt/LHAPDF-6.2.3
make
make install
pythia6是个相当古老的软件包,它使用Fortran77编写,在2007年已经被用C++重写的pythia8代替,但是没有办法,genie要求pythia6
这里提供一个简单安装pythia6的方法:
下载:点击这里
原地址已不能使用,请使用https://root.cern.ch/download/pythia6.tar.gz
编译:
Linux: ./makePythia6.linux(按照命名来说,64位Linux应该是./makePythia6.linuxx8664,但是我用前者也可以)
macos: ./makePythia6.macosx(按照命名来说,64位macos应该是./makePythia6.macosx64,但是我两个都没试)
编译之后生成: libPythia6.so 即为需要的pythia6库文件。
注意编译过程可能遇到g77错误,把对应的make文件里g77改成gfortran
下载安装包:
wget ftp://xmlsoft.org/libxml2/libxml2-2.8.0.tar.gz
解压:
tar –xvf libxml2-2.8.0.tar.gz
规范命名:
mv libxml2-2.8.0 libxml2-2.8.0-src
mkdir libxml2-2.8.0
编译安装:
cd ../ libxml2-2.8.0 -src
./configure --prefix=/opt/libxml2-2.8.0
make
make install
下载安装包:
wget https://root.cern/download/root_v6.20.04.source.tar.gz
解压:
tar –xvf root_v6.20.04.source.tar.gz
规范命名:
mv root_v6.20.04 root-6.20.04-src
mkdir root-6.20.04
编译安装:
cd ../ root-6.20.04
cmake ../ root-6.20.04-src
-DCMAKE_INSTALL_PREFIX=/opt/root-6.20.04
-Dbuiltin_gsl=ON -Dmathmore=ON -Dpythia6=ON
-DPYTHIA6_LIBRARY=/opt/pythia6/libPythia6.so
-DLIBXML2_INCLUDE_DIR=/opt/libxml2-2.8.0/include/libxml2
-DLIBXML2_LIBRARY=/opt/libxml2-2.8.0/lib/libxml2.so
cmake的时候需要注意gsl和mathmore要打开,XML2的路径写到哪里也需要准确。
不是安装过gsl了吗?为什么这里gsl还要打开?我也不清楚,有时间可以测试gsl不打开的效果。
我是使用cmake-gui配置,注意PYTHIA6_LIBRARY设置一定要正确,我还遇到gfortan库中函数未定义的问题,最后发现是pythia6不能从pythia官网下载,需要从ROOT官网下载。
顺利的话就可以编译安装:
make
make install
准备好电影好好享受编译过程!
总言:genie的安装和一般GNU软件安装方法一样,都是 ./configure&&make&&make install
git clone https://github.com/GENIE-MC/Generator.git
如果下载太慢可以选择下面链接(同步于2020-4)
git clone https://gitee.com/zhaoww7/genieGenerator
您也可以先把github仓库导入国内gitee仓库,然后从gitee下载
总而言之,您如果在/opt目录下载,会得到/opt/genieGenerator
、
另外创建/opt/genie作为您的安装目录。
genie安装前需要设置环境变量,目的是genie安装过程中可以寻找到依赖包:
$GENIE=/opt/genieGenerator:注意这里是genie源代码位置(存疑)
$ROOTSYS=/opt/root-6.20.04 :ROOT的安装位置
将下列路径添加到 LD_LIBRARY_PATH :
$GENIE/lib、$ROOTSYS/bin、$/opt/pythia6/libPythia6.so、/opt/libxml2-2.8.0/lib、/opt/log4cpp/lib
添加方法: export LD_LIBRARY_PATH=$GENIE/lib:$LD_LIBRARY_PATH 以此类推
将下列路径添加到 PATH :
$ROOTSYS/bin、$GENIE/bin
添加方法: export PATH=$ROOTSYS/bin:$GENIE/bin:$PATH
也可以将上面的环境设置写入~/.bashrc(linux用户)
官方给出的配置方法如下:
./configure --prefix=/opt/genie ## 安装目录 --disable-profiler --enable-gfortran ## 记得打开gfortran --with-gfortran-lib=/usr/lib/x86_64-linux-gnu ## 使用 ldconfig -p | grep libfortran 找到gfortran库位置写上 --disable-lhapdf5 --enable-lhapdf6 --disable-validation-tools --disable-cernlib --enable-lhapdf --enable-flux-drivers --enable-geom-drivers --disable-doxygen --enable-test --enable-mueloss --enable-dylibversion --enable-t2k --enable-fnal --enable-atmo --enable-nucleon-decay --disable-masterclass --disable-debug --with-optimiz-level=O2 --with-pythia6-lib=/opt/pythia6 --with-lhapdf6-inc=/opt/LHAPDF-6.2.3/include --with-lhapdf6-lib=/opt/LHAPDF-6.2.3/lib --with-libxml2-inc=/opt/libxml2-2.8.0/include/libxml2 --with-libxml2-lib=/opt/libxml2-2.8.0/lib --with-log4cpp-inc=/opt/log4cpp-1.1.3/include --with-log4cpp-lib=/opt/log4cpp-1.1.3/lib
官网上还有一句话:看起来一切默认就能安装。
不过我建议最好不要缺少gfortran和inc、lib的路径。
如果上面 ./configure 没有报错,那么恭喜你已经半只脚踏入成功的大门了,编译只需:
make -j4
同样的,这里是4还是其他取决于你的电脑CPU核数
将编译好的文件复制到/opt/genie
make install
一切顺利?恭喜恭喜!
留白也是艺术
本文基本内容从genie导入,后增加自己注释而成;侵权请联系本人删除。