问题描述:
在已安装成功Relion3.1.1版本的Ubuntu系统环境下,尝试升级版本为Relion4.0 beta版。按照官方教程安装时,出现编译问题,即make
阶段时 报错 “/src/jaz/tomography/local_particle_refinement.cpp,error ‘isnan’ was not declared in this scope”等类似信息。一直卡在make阶段。
原因
relion官方安装信息,gcc版本推荐为5.0及以上,但是Ubuntu 16.04原本自带5.3版本,所以一直没发现问题所在。搜索发现 isnan() 是C语言里面的一个函数,考虑是C编译器出现问题。原因是isnan在cmath中被取消宏定义 原因链接
解决方法:
方法1
先将gcc版本升高,在成功安装为7.5版本后,再重新编译,make通过,安装成功。(我这里直接安装的就是7.5,不知道其他版本是否可行)
apt-get install gcc-7.5
查询gcc版本命令
gcc --version
方法2
其他解决方案,需要手动改代码,本人未测试:方案链接