这篇文章上次修改于 1824 天前,可能其部分内容已经发生变化,如有疑问可询问作者。

CentOS 编译安装 MRtrix3

参考官方文档 :https://mrtrix.readthedocs.io/en/latest/installation/linux_install.html

1. 安装相关依赖

可选依赖库:

  • libTIFF version >= 4.0 读取TIFF 图像的开源库
  • FFTW version >= 3.0 实现快速傅里叶运算 c 库
sudo yum install git python numpy eigen3-devel zlib-devel libqt4-devel libgl1-mesa-dev fftw-devel libtiff-devel

输出结果:
[root@localhost opt]# sudo yum install git g++ python numpy eigen3-devel zlib-devel libqt4-devel libgl1-mesa-dev fftw-devel libtiff-devel
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: centos.ustc.edu.cn
 * extras: mirrors.tuna.tsinghua.edu.cn
 * updates: centos.ustc.edu.cn
没有可用软件包 g++。
没有可用软件包 eigen3-devel。
软件包 zlib-devel-1.2.7-18.el7.x86_64 已安装并且是最新版本
没有可用软件包 libqt4-devel。
没有可用软件包 libgl1-mesa-dev。
正在解决依赖关系

从上述输出结果可以看出部分依赖库不在软件源中。

  • g++
  • eigen3-devel
  • libqt4-devel
  • libgl1-mesa-dev

a. g++ :

​ 如已安装不低于gcc4.9版本可忽略,低于4.9版本需要升级。

​ 可以参考链接 CentOS 7.5升级 GCC 7.3 文档: http://zhuyongkang.cn/index.php/archives/15

b. eigen3-devel

yum install cmake
wget http://bitbucket.org/eigen/eigen/get/3.3.7.tar.gz
tar -xzvf ./3.3.7.tar.gz
cd eigen-eigen-323c052e1731/
mkdir build && cd build
cmake -DCMAKE_INSTALL_PREFIX=/usr/ ..
make install

c. Qt5.12.3 安装

yum install freetype-devel.x86_64  mesa-libGL-devel.x86_64

cd /opt
wget http://download.qt.io/official_releases/qt/5.12/5.12.3/qt-opensource-linux-x64-5.12.3.run
chmod +x qt-opensource-linux-x64-5.12.3.run
./qt-opensource-linux-x64-5.12.3.run
## 注意勾选 Desktop gcc 64-bit
## 其他选项可以按需选择
## 默认安装到/opt目录下

## 配置环境变量
vim ~/.bashrc

## 在最后一行添加
export PATH=$PATH:/opt/Qt5.12.3/5.12.3/gcc_64/bin:/opt/Qt5.12.3/Tools/QtCreator/bin
## 生效环境变量
source ~/.bashrc

## 测试
qtcreator.sh

## 创建Qt测试项目编译运行

2. 编译 MRtrix3

cd /opt
git clone https://github.com/MRtrix3/mrtrix3.git
cd mrtrix3/

./configure
## 如果该步骤出错,查看同目录下 configure.log文件检查出错原因。

./build

建议在 8G 内存下进行编译,否则可能会在编译过程中由于内存不足报错。可以根据报错终止时提示的命令手动进行编译。可能遇到如下报错,如未遇到可忽略,若不在下列的类似错误可用同样方式解决。如下举例:

 ## 若出现 ERROR: ( 33/505) [CC] tmp/cmd/mrmetric.o 报错,程序终止后使用以下命令手动编译

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE cmd/mrmetric.cpp -o tmp/cmd/mrmetric.o

编译完成后重新执行 ./build

## 若出现 ERROR: ( 80/471) [CC] tmp/core/math/average_space.o 报错,使用以下命令编译

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE core/math/average_space.cpp -o tmp/core/math/average_space.o

编译完成后重新执行 ./build

## 若出现 ERROR: ( 71/391) [CC] tmp/src/registration/transform/initialiser_helpers.o 报错,使用以下命令编译

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE src/registration/transform/initialiser_helpers.cpp -o tmp/src/registration/transform/initialiser_helpers.o
编译完成后重新执行 ./build

## 若出现 ERROR: ( 53/277) [CC] tmp/cmd/mrmath.o ,使用以下命令编译

g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE cmd/mrmath.cpp -o tmp/cmd/mrmath.o
编译完成后重新执行 ./build

## 若出现 ERROR: ( 59/223) [CC] tmp/cmd/mrtransform.o ,使用以下命令编译
g++ -c -std=c++11 -DMRTRIX_BUILD_TYPE="release version" -pthread -fPIC -DMRTRIX_WORD64 -DMRTRIX_TIFF_SUPPORT -DEIGEN_FFTW_DEFAULT -Wall -O3 -DNDEBUG -Isrc -I./core -Icmd -isystem /usr/include/eigen3 -DEIGEN_DONT_PARALLELIZE cmd/mrtransform.cpp -o tmp/cmd/mrtransform.o
编译完成后重新执行 ./build

3. 运行环境

编译完成后执行 ./set_path ,会自动将 ${mrtrix3}/bin 目录加入当前用户的环境变量中。完成后可在任意位置执行 MRtrix3 程序命令。

4. 备注:

如运行 mrview 程序时出现如下报错:

$ mrview
X Error: GLXBadFBConfig 164

Extension:    150 (Uknown extension)
Minor opcode: 34 (Unknown request)
Resource id:  0x2e0003b 
mrview: [WARNING] unable to determine OpenGL version - operation may be unstable if actual version is less than 3.3 
mrview: [ERROR] GLSL log [vertex shader]: 0:1(10): error: GLSL 3.30 is not supported. Supported versions are: 1.10, 1.20, 1.30, 1.00 ES, and 3.00 ES

该报错为当前显卡驱动支持的 OpenGL 版本不在程序的支持范围内。

使用命令glxinfo | grep OpenGL 查看当前支持的OpenGL版本。

[root@localhost hconk]# glxinfo | grep OpenGL
OpenGL vendor string: VMware, Inc.
OpenGL renderer string: SVGA3D; build: RELEASE;  LLVM;
OpenGL core profile version string: 3.3 (Core Profile) Mesa 17.2.3
OpenGL core profile shading language version string: 3.30
OpenGL core profile context flags: (none)
OpenGL core profile profile mask: core profile
OpenGL core profile extensions:
OpenGL version string: 3.0 Mesa 17.2.3
OpenGL shading language version string: 1.30
OpenGL context flags: (none)
OpenGL extensions:
OpenGL ES profile version string: OpenGL ES 3.0 Mesa 17.2.3
OpenGL ES profile shading language version string: OpenGL ES GLSL ES 3.00
OpenGL ES profile extensions:

如在VMware下安装的Linux系统,可以在 VMware 虚拟机 -> 设置 -> 显示器 中勾选加速3D图形,图形内存可设置为2GB ,

经测试在 VMware 15 ,CentOS Linux release 7.5.1804 (Core) x86-64 环境下可正常使用。