简介:这份资源是核医学仿真软件GATE的安装流程文档,面向从事核医学仿真、蒙特卡罗模拟研究的科研人员与研究生,帮助其在Linux环境下完成GATE及其依赖组件的部署。资源包内含1个PDF文件,大小约1.09MB,以图文形式系统梳理了从环境检查到组件安装的完整脉络。内容覆盖gcc与cmake的版本核查与安装、针对不同Ubuntu版本(12.04至18.04)的必备包安装命令、ROOT二进制包的解压与source配置,以及Geant4版本匹配与编译要点,并特别提示了GATE_USE_OPTICAL功能所需的libxml2-dev依赖。文档还针对依赖冲突、包版本不匹配等常见问题给出了排查思路,并建议为Gate及相关软件单独建立目录以便管理。目前已有1049人学习,适合需要快速搭建GATE仿真环境、减少编译踩坑的读者参考。
1. 核医学仿真软件GATE安装流程:从零把Geant4和ROOT串起来
如果你做核医学成像仿真,比如PET、SPECT的蒙特卡洛建模,大概率绕不开GATE这套开源框架。它底层跑的是Geant4的物理过程,上层用ROOT做数据输出和分析,整套工具链在Linux上跑得最顺。但很多人第一次装GATE就卡住了——不是卡在GATE本身,而是卡在Geant4和ROOT的版本匹配、环境变量串联、ccmake配置这几个环节。这篇笔记按我实际装Gate 8.0的流程走一遍,从检查gcc/cmake开始,到跑通benchPET验证结束。适合刚接触核医学仿真、需要在Ubuntu上从源码编译GATE的从业者,也适合之前装失败过、想排查版本对应关系的熟手。
2. 装GATE之前先把地基打牢:gcc、cmake与系统依赖包
GATE的安装本质上是一条编译链:系统基础工具 → Geant4 → ROOT → GATE。任何一环版本不对或者环境变量没串上,后面都会翻车。所以这一章先把最底层的gcc、cmake和系统依赖包处理干净,别急着去下载GATE的tar包。
2.1 检查gcc和cmake版本是否达标
先看当前系统里有没有编译工具,以及版本够不够。打开终端直接敲:
gcc --version cmake --versionGATE 8.0对gcc的要求是版本不低于4.8,cmake不低于3.x。我机器上gcc是7.3.0,虽然不在官方推荐的[4.8-6.2]区间内,但只要不低于最低版本就能用。cmake同理,满足最低要求即可。如果提示“command not found”或者版本太低,就往下走安装步骤。
2.2 安装build-essential和cmake
Ubuntu下最省事的做法是用apt一把装齐:
sudo apt-get update sudo apt-get install build-essential sudo apt-get install cmakebuild-essential这个包会带上gcc、g++、make、libc-dev等一整套编译工具,不用单独一个个装。cmake单独装是因为它不在build-essential的依赖里。装完再跑一次gcc --version和cmake --version确认。
2.3 按Ubuntu版本装系统依赖包
这一步是最容易出玄学问题的地方。GATE官方wiki按Ubuntu版本给了不同的包列表,核心差异在Qt4和Qt5的库名上。我整理成表格方便对照:
| 系统版本 | 对应GATE/Geant4版本 | 关键依赖包 |
|---|---|---|
| Ubuntu 18.04.2 LTS | GATE v8.2 / Geant4 10.5 p01 | cmake-curses-gui、libqt5-default、libxmu-dev |
| Ubuntu 16.04.2 LTS | GATE v8.0 / Geant4 10.3 p01 | cmake-curses-gui、libqt4-dev、libxmu-dev |
| Ubuntu 14.04.3 LTS | GATE v7.1 / Geant4 10.1 p02 | libqt4-opengl、libqt4-core、libX11-dev |
以Ubuntu 16.04装GATE 8.0为例,完整命令是:
sudo apt-get install cmake cmake-curses-gui build-essential \ libqt4-opengl-dev qt4-qmake libqt4-dev \ libx11-dev libxmu-dev libxpm-dev libxft-dev如果编译时要启用GATE_USE_OPTICAL光学仿真功能,还得补一个:
sudo apt-get install libxml2-dev注意:如果apt报依赖冲突或版本不对,优先按提示把缺失的依赖库补上;实在解决不了就换Ubuntu 16.04,这个版本在GATE社区里验证得最充分。
2.4 建立独立的安装目录树
在动手编译之前,建议先规划好目录结构。我一般会在home下建一个sim_workspace,里面分root、geant4、gate三个子目录,各自再分source、build、install。这样做的好处是后面写环境变量脚本时路径清晰,不会把源码目录和编译目录搞混。源码解压到source,ccmake在build里跑,make install指向install,三个目录互不污染。
3. ROOT和Geant4的编译安装:版本匹配是生死线
GATE本身不直接依赖ROOT和Geant4的源码,它依赖的是这两个库编译出来的二进制和头文件。所以这一章的核心就两件事:ROOT用二进制包快速搞定,Geant4用源码编译并确保版本和GATE对得上。
3.1 ROOT优先用官方二进制包
ROOT没必要从源码编译,官方提供了各平台的预编译二进制包,下载解压就能用。去ROOT官网下载对应Ubuntu版本和gcc版本的tar.gz,比如:
tar -xzf root_v6.xx.xx.Linux-ubuntu16-x86_64-gcc5.4.tar.gz mv root root_v6.xx source /home/user/sim_workspace/root/root_v6.xx/bin/thisroot.shthisroot.sh这个脚本会把ROOT的bin、lib、include路径写进当前shell的环境变量。验证方式是直接输入root,如果能进入ROOT的C++交互界面就说明成功了。
注意:
source thisroot.sh只在当前终端会话有效。新开一个终端就得重新source,这也是后面要写gate_env.sh统一管理的原因。
3.2 Geant4版本必须和GATE版本严格对应
这是整个安装流程里最关键的一条:GATE 8.0对应Geant4 10.3,GATE 8.2对应Geant4 10.5 p01。版本不对,ccmake配置阶段就会报错,或者编译到一半链接失败。去Geant4官网下载对应版本的源码包:
tar -xzf geant4.10.03.p03.tar.gz mkdir geant4.10.03-build mkdir geant4.10.03-install cd geant4.10.03-build ccmake ../geant4.10.03.p033.3 ccmake配置Geant4的关键参数
进入ccmake界面后,按c开始配置,按e返回。需要重点关注的几个参数:
| 参数名 | 设置值 | 说明 |
|---|---|---|
| CMAKE_INSTALL_PREFIX | /home/user/sim_workspace/geant4/geant4.10.03-install | 必须用绝对路径 |
| GEANT4_INSTALL_DATA | ON | 自动下载物理数据文件,必选 |
| GEANT4_USE_SYSTEM_CLHEP | OFF | GATE 7.0之后用Geant4集成的CLHEP |
| GEANT4_USE_OPENGL_X11 | ON | 可视化需要 |
| GEANT4_USE_QT | ON | 图形界面需要 |
配置完再按一次c重新配置,然后按g生成Makefile并退出。接着编译安装:
make -j4 make install source /home/user/sim_workspace/geant4/geant4.10.03-install/bin/geant4.sh-j4里的4是并行编译的核数,按自己CPU核心数填。编译过程大概二三十分钟,取决于机器性能。
4. 编译GATE 8.0:ccmake配置与常见报错处理
前面ROOT和Geant4都装好并且source过环境变量之后,才能开始编译GATE。这一章把GATE的编译流程和几个高频报错点讲清楚。
4.1 下载解压与目录准备
从GATE官网下载Gate-8.0.tar.gz,解压后建build和install目录:
tar -xzf Gate-8.0.tar.gz mkdir gate_v8.0-build mkdir gate_v8.0-install在进入build目录之前,务必在当前终端重新source一次ROOT和Geant4的环境变量:
source /home/user/sim_workspace/root/root_v6.xx/bin/thisroot.sh source /home/user/sim_workspace/geant4/geant4.10.03-install/bin/geant4.sh如果这一步忘了source,ccmake配置时找不到ROOT或Geant4的路径,后面会连环报错。
4.2 ccmake配置GATE的核心参数
cd gate_v8.0-build ccmake ../Gate-8.0按c配置后,重点检查这几个参数:
| 参数名 | 设置值 | 说明 |
|---|---|---|
| CMAKE_INSTALL_PREFIX | /home/user/sim_workspace/gate/gate_v8.0-install | 安装路径 |
| Geant4_DIR | Geant4安装目录下的lib/Geant4-10.3.3 | 路径不匹配需手动改 |
| ROOTCINT_EXECUTABLE | ROOT安装目录下的bin/rootcint | 路径不匹配需手动改 |
| GATE_USE_ECAT7 | OFF | 可选包,普通用户不需要 |
| GATE_USE_ITK | OFF | 可选包,普通用户不需要 |
| GATE_USE_LMF | OFF | 可选包,普通用户不需要 |
如果Geant4_DIR和ROOTCINT_EXECUTABLE的路径和你实际安装的不一致,手动改成正确路径。改完按c再配置一次,按g生成Makefile。
4.3 编译安装与验证
make -j4 make install编译时间比Geant4短一些,大概十几分钟。装完之后GATE的可执行文件在gate_v8.0-install/bin/下面。
4.4 环境变量脚本gate_env.sh的写法
在gate_v8.0-install/bin/下新建gate_env.sh:
#!/bin/sh source /home/user/sim_workspace/root/root_v6.xx/bin/thisroot.sh source /home/user/sim_workspace/geant4/geant4.10.03-install/bin/geant4.sh export PATH=$PATH:/home/user/sim_workspace/gate/gate_v8.0-install/bin然后source一下:
source /home/user/sim_workspace/gate/gate_v8.0-install/bin/gate_env.sh输入Gate如果能进入交互界面就说明环境变量串通了。为了不用每次开终端都手动source,把最后这行加到~/.bashrc末尾:
echo "source /home/user/sim_workspace/gate/gate_v8.0-install/bin/gate_env.sh" >> ~/.bashrc5. 避坑指南:GATE安装中最容易翻车的五个地方
这一章记录我在装GATE过程中实际踩过的坑,每条按现象、原因、解决来写。如果你正在装或者装失败了,对照排查。
5.1 ccmake报错找不到Geant4或ROOT
现象:ccmake配置GATE时提示Could NOT find Geant4或ROOTCINT_EXECUTABLE-NOTFOUND。
原因:当前终端没有source Geant4和ROOT的环境变量,或者source的路径写错了。
解决:在跑ccmake之前,先确认which geant4-config和which root能输出正确路径。如果输出为空,重新source对应的sh脚本。source完再进build目录跑ccmake。
5.2 Geant4编译时DATA下载失败
现象:make过程中卡在下载物理数据文件,或者报网络超时。
原因:Geant4的DATA文件体积大,网络不稳定时容易断。
解决:在ccmake里把GEANT4_INSTALL_DATA设为ON后,可以手动去Geant4官网下载对应的DATA包,解压到install目录下的share/Geant4-10.3.3/data/,再重新make install。
5.3 GATE编译时报CLHEP链接错误
现象:链接阶段报undefined reference to CLHEP::...。
原因:ccmake里GEANT4_USE_SYSTEM_CLHEP被设成了ON,但系统里没有独立安装CLHEP。
解决:回到Geant4的build目录,重新ccmake,把GEANT4_USE_SYSTEM_CLHEP改成OFF,重新make install。GATE 7.0之后用Geant4集成的CLHEP就够了。
5.4 新开终端后Gate命令找不到
现象:当前终端能跑Gate,新开一个终端就提示Gate: command not found。
原因:gate_env.sh只在当前shell里source过,没有写进~/.bashrc。
解决:把source /path/to/gate_env.sh加到~/.bashrc末尾,然后source ~/.bashrc。之后每次开终端会自动加载。
5.5 benchmark运行报错或卡死
现象:跑Gate benchPET.mac时程序卡住不动,或者报ROOT文件写入错误。
原因:可能是之前残留的benchmarkPET.root文件权限不对,或者ROOT环境变量没加载。
解决:先删掉旧的root文件rm benchmarkPET.root,确认root命令能正常启动,再重新跑Gate benchPET.mac。跑大约1分钟后按Ctrl+z终止,然后用ROOT打开生成的root文件验证。
6. 验证安装与benchPET跑通:从mac脚本到root分析
装完不验证等于没装。GATE源码包里自带benchmarks目录,其中benchPET是最适合做安装验证的算例。这一章把验证流程走一遍,顺便说几个我常用的检查习惯。
6.1 跑benchPET验证基本组件
先开一个新终端,确认Gate命令可用,然后进入benchmarks目录:
cd /home/user/sim_workspace/gate/Gate-8.0/benchmarks/benchPET ls如果目录下有benchmarkPET.root,先删掉:
rm benchmarkPET.root然后运行:
Gate benchPET.mac程序会开始跑蒙特卡洛模拟,大约1分钟后按Ctrl+z终止。此时目录下应该生成了benchmarkPET.root文件。
6.2 用ROOT查看仿真输出
root进入ROOT交互界面后:
.x benchmarkPET.C这个宏会读取root文件并画出PET探测器的能量谱和符合事件分布。如果能看到直方图正常显示,说明Geant4的物理过程、ROOT的I/O、GATE的探测器建模这条链路全部打通了。
6.3 我每次装完必做的三个检查
第一个检查是Gate --version,确认版本号输出正确。第二个检查是root -b -q跑一个空宏,确认ROOT的批处理模式没问题。第三个检查是看gate_v8.0-install/bin/下有没有Gate可执行文件,以及gate_env.sh里的路径是否都指向实际存在的目录。这三个检查花不了一分钟,但能避免后面跑正式仿真时才发现环境有问题。
6.4 关于可选包的取舍
ECAT7、ITK、LMF这些可选包,普通玩家做基础PET/SPECT仿真基本用不到。我的建议是第一次装GATE全部保持OFF,先把主流程跑通。等确实需要读ECAT7格式的医学图像数据,或者要做LMF列表模式仿真时,再回头重新编译GATE并打开对应选项。这样能把第一次安装的变量降到最少,出了问题也容易定位。
从那以后我每次装GATE,都会先把gcc、cmake、Geant4、ROOT四个组件的版本号写在纸上,ccmake配置时逐个核对路径,最后跑一遍benchPET确认整条链路通畅。这套流程走下来,基本不会再出现装到一半发现版本不对要推倒重来的情况。希望帮到你。
本文还有配套的精品资源,点击获取