这篇文章上次修改于 2014 天前,可能其部分内容已经发生变化,如有疑问可询问作者。
CentOS 编译安装 MRtrix3
参考官方文档 :https://mrtrix.readthedocs.io/en/latest/installation/linux_install.html
1. 安装相关依赖
- gcc >= 4.9 (CentOS 7.5升级 GCC 7.3 文档: http://zhuyongkang.cn/index.php/archives/15/)
- Python 2.7
- zlib 库
- Eigen 库,线性代数库,用于矩阵及矢量计算
- Qt version >= 4.7
可选依赖库:
- 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 环境下可正常使用。
没有评论