在Windows上编译和使用Ambertools20

介绍如何在Windows上成功编译出Ambertools20

Amber是一款历史悠久,功能强大的分子模拟软件,涉及领域十分广泛,功能也很强大。但本文所要说的也是Amber的一个短板,那就是在Windows十分局限,不能编译出CUDA加速版本,很多模块也无法编译出MPI版本。
正如官网所言,Amber's Windows support is somehwat minimal,但是用于初始参数生成还是不错的。

编译步骤和错误解决

目前有几种方法进行编译:

这几种方法都可以成功安装Ambertools20。网盘下载链接[提取码:wzmd],其中采用WSL的方法仅适用于Windows10系统,并且这种方式安装也十分简单,基本与Linux系统的安装手段相同。当然也是不支持CUDA的。
但是如果你不是用的Windows10呢?那么只能够采用第二种方法编译了,其中采用Cygwin的方式已经有博文介绍了Windows下AmberTools17的编译。但是实际你可能遇到其他编译出错问题,需要自行解决。


我这里将介绍如何采用Msys2进行编译Windows版本的Ambertools20

  • 安装Msys2,并安装依赖包
    这一步很简单,直接官网下载安装,然后启动Msys2终端,使用pacman软件包管理器进行依赖包的安装:

    1
    pacman -S tcsh gcc gcc-fortran flex zlib zlib-devel libbz2 libbz2-devel cmake make bison python2 python2-pip -y
  • 编译Ambertools20
    依次是解压安装包、设置AMBERHOME、配置、编译、打包:

    1
    2
    3
    4
    5
    6
    tar -xvf Ambertools20
    cd amber20_src
    export AMBERHOME=`pwd`
    ./configure -windows -noX11 --no-updates --with-python /usr/bin/python gnu
    source amber.sh
    make -j4

步骤看上去很简单,但是中间的configuremake过程很容易报错。常见问题和解决方法如下:

  • 提示python环境有问题
    答:这个最好不要用太高版本的pythonpython2.7就很ok),很容易出错。如果不需要,也可以关掉python,使用选项--skip-python

  • 提示变量作用域内M_PI未定义
    答:找到报错文件位置,在头文件下面定义常量$\pi$即可:

    1
    #define  M_PI  3.1415926535897932384626
  • 提示找不到共享库
    答:这个如果你是在Msys2 64终端编译的,你可能需要将生成的库(位于AMBERHOME/lib)复制到AMBERHOME/lib64即可

  • 编译到文件misc_utils.c报错,提示execinfo.h:No such file or directory
    答:这个是Windows上没有execinfo.h头文件,简单的解决方案是注释掉相关行,更改print_backtrace函数:

    1
    2
    3
    4
    5
    6
    7
    //#ifndef WITHOUT_BACKTRACE
    //#include <execinfo.h>
    //#endif

    void print_backtrace(int signal) {
    fprintf(stderr, "Error: signal %d\n",signal);
    }
  • 编译完运行时提示缺少msys-2.0.dll等动态库
    答:提示缺少什么,就到Msys2的安装路径下找到该文件并复制到AMBERHOME/bin目录下。

  • 成功完成了编译,但是运行发现很多exe无法运行?
    答:这一类是包装可执行程序的脚本(文本的), 虽然它们的扩展名也是.exe, 对应的真正二进制程序在AMBERHOME/bin/to_be_dispatched。可以直接复制出来覆盖AMBERHOME/bin中的exe即可。

  • 编译完成发现resp.exe无法运行
    答:这是因为上面的命令采用-windows,而不是cygwin导致一些预定义常量没有生效,原来的值8000太大。这里可以直接更改AMBERHOME/AmberTools/src/etc/limits.h#else后面的一行为:

    1
    parameter (maxq   = 7000)
  • 如果你编译的是其他版本的Ambertools,在编译cpptraj的过程中死活通不过,提示多次定义什么的
    答:简单粗暴的方法,直接cd进入AMBERHOME/AmberTools/src/cpptraj路径下,然后执行:

    1
    2
    ./configure -amberlib -shared gnu
    make -j4

编译完成生成了cpptraj.exe

打包发布

bindat, lib或者lib64这几个文件夹放到一起即可。

实际使用

具体环境变量配置可以参看这个博文用AmberTools+ACPYPE+Gaussian创建小分子GAFF力场的拓扑文件前半部分,很简单。

资源分享

当然这样编译好的程序就可以给其他人使用了。这里我也分享一下我编译好的。
网盘链接:https://pan.baidu.com/s/1NEX8PH-4mMN0c3XwC6jQgw,提取码:8cjg