---
title: 编译和安装
description: "1. 使用PuTTY工具，以root用户登录服务器。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/openmind_kunpengabinit_02_0012.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/openmind_kunpengabinit_02_0012.html
indexId: 916064c998be7cdb8ad4c3eb8ada19a7ccfc286b50a3a0bc6b05379e9675786e77
---
# 编译和安装

#### 操作步骤

1. 使用PuTTY工具，以root用户登录服务器。
2. 执行以下命令设置环境变量。

```
export MPI_HOME=
/path/to/HMPI
export CPPFLAGS=" -I
/path/to/HDF5
/include -I
/path/to/PNETCDF
/include -I
/path/to/NETCDF
/include -I$MPI_HOME/include"
export CFLAGS=" -I
/path/to/HDF5
/include -I
/path/to/PNETCDF
/include -I
/path/to/NETCDF
/include -I$MPI_HOME/include "
export CXXFLAGS=" -I
/path/to/HDF5
/include -I
/path/to/PNETCDF
/include -I
/path-to/NETCDF
/include -I$MPI_HOME/include "
export FCFLAGS=" -I
/path/to/HDF5
/include -I
/path/to/PNETCDF
/include"
export FFLAGS=" -I
/path/to/HDF5
/include -I
/path/to/PNETCDF
/include"
export LDFLAGS=" -L
/path/to/HDF5
/lib -L
/path/to/PNETCDF
/lib -L
/path/to/PNETCDF
/lib”
```


3. 执行以下命令创建第三方数学库安装包存放目录“extral”。

```
cd
/path/to/ABINIT
mkdir extral
```


4. 下载AtomPAW、BigDFT、LibXC、Wannier90软件包。
下载地址：https://www.abinit.org/fallbacks(https://www.abinit.org/fallbacks)

  - AtomPAW：atompaw-4.0.1.0.tar.gz
  - BigDFT：bigdft-1.7.1.25.tar.gz
  - LibXC：libxc-3.0.0.tar.gz
  - Wannier90：wannier90-2.0.1.1.tar.gz
5. 利用SFTP工具将以上下载的软件包上传到“extral”目录下。
6. 执行以下命令解压安装包。

```
cd extral
tar -xzvf atompaw-4.0.1.0.tar.gz
tar -xzvf bigdft-1.7.1.25.tar.gz
tar -xzvf libxc-3.0.0.tar.gz
tar -xzvf wannier90-2.0.1.1.tar.gz
```


7. 返回“/path/to/ABINIT”，执行以下命令解压ABINIT安装包。

```
cd
/path/to/ABINIT
tar -zxvf abinit-8.10.3.tar.gz
```


8. 执行以下命令进入解压后目录。

```
cd abinit-8.10.3
```


9. 执行以下命令创建并进入ABINIT软件编译目录。

```
mkdir build
cd build
```


10. 执行以下命令进行配置。

```
../configure FC=mpif90 --with-mpi-prefix=
/path/to/HMPI
/ --with-dft-flavor="libxc+atompaw" --with-trio-flavor="netcdf" --with-tardir=
/path/to/ABINIT
/extral --with-netcdf-incs="-I
/path/to/NETCDF
/include" --withnetcdf-libs="-L
/path/to/NETCDF
/lib -lnetcdf -L
/path/to/NETCDF
/lib -lnetcdff" FCFLAGS="-g -O2 -ffree-line-length-none" --with-linalg-libs="-L
/path/to/OPENBLAS
/ -lopenblas" CFLAGS="-O2"
```


11. 执行以下命令修改配置文件。

```
sed -i -e "s/shiftr/rshift/g" src/78_effpot/m_random_xoroshiro128plus.F90
sed -i -e "s/shiftl/lshift/g" src/78_effpot/m_random_xoroshiro128plus.F90
```


12. 执行以下命令进入“ABINIT”目录。

```
cd
/path/to/ABINIT
/abinit-8.10.3
```


13. 执行以下命令修改配置文件。

```
sed -i 's/#define HAVE_FC_INT_QUAD 1/#undef HAVE_FC_INT_QUAD/' config.h
sed -i 's/#define HAVE_FC_LONG_LINES 1/#undef HAVE_FC_LONG_LINES/' config.h
sed -i 's/#define atomic_mass_units/at_mass_units/' src/77_ddb/m_phonons.F90
sed -i 's/#define number_of_atom_species/n_atom_species/' src/77_ddb/m_phonons.F90
sed -i 's/alpha = 0.2/!alpha = 0.2/' src/78_eph/m_phgamma.F90
```


14. 执行以下命令修改“src/56_io_mpi/m_hdr.F90”文件。

  a. 打开“src/56_io_mpi/m_hdr.F90”文件。

```
vi src/56_io_mpi/m_hdr.F90
```


  b. 按“i”进入编辑模式，将“integer,public,parameter :: HDR_LATEST_HEADFORM = HDR_KNOWN_HEADFORMS(size(HDR_KNOWN_HEADFORMS))”修改为如下内容。

```
integer,private,parameter :: HDR_KNOWN_HEADFORMS(1) = [123]
integer,public,parameter :: size_hdr_known_headforms = size(HDR_KNOWN_HEADFORMS)
integer,public,parameter :: HDR_LATEST_HEADFORM = HDR_KNOWN_HEADFORMS(size_hdr_known_headforms)
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
15. 执行以下命令修改“src/62_iowfdenpot/m_io_screening.F90”文件。

  a. 打开“src/62_iowfdenpot/m_io_screening.F90”文件。

```
vi src/62_iowfdenpot/m_io_screening.F90
```


  b. 按“i”进入编辑模式，将“integer,private,parameter :: HSCR_KNOWN_HEADFORMS(1) = [80]”修改为如下内容。

```
integer,private,parameter :: HSCR_KNOWN_HEADFORMS(1) = [123]
integer,private,parameter :: size_hscr_known_headforms = size(HSCR_KNOWN_HEADFORMS)
integer,public,parameter :: HSCR_LATEST_HEADFORM = HSCR_KNOWN_HEADFORMS(size_hscr_known_headforms)
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
16. 执行以下命令进行编译安装。

```
FC=mpif90 CC=mpicc CXX=mpicxx make multi multi_nprocs=32
```


  “multi_nprocs”为并发编译的核数，可根据使用机器的核数和需求自由选择，初次编译建议不要并发。

  执行编译命令时，因路径问题可能报“unable to open MODULE file *.mod”错误，解决方法：

  将“.mod”文件拷贝到“incs”目录下，再执行编译安装，因“.mod”文件在编译过程中不断生成，故拷贝“.mod”的操作会持续执行多次。若不想执行多次拷贝操作，可编写一个脚本，例如：
  a. 创建脚本。

```
vi cp.sh
```


  b. 按“i”进入编辑模式，编写如下内容。

```
#!/bin/bash
for i in `find -name *.mod`
do
cp $i src/incs
done
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 执行以下命令运行脚本。

```
./
cp.sh
```


17. 执行以下命令添加环境变量。

```
export ABI_TESTS=
/path/to/ABINIT
/abinit-8.10.3/tests/
export ABI_TUTORIAL=$ABI_TESTS/tutorial/
export ABI_TUTORESPFN=$ABI_TESTS/tutorespfn/
export ABI_TUTOPARAL=$ABI_TESTS/tutoparal/
export ABI_TUTOPLUGS=$ABI_TESTS/tutoplugs/
export ABI_PSPDIR=$ABI_TESTS/Psps_for_tests/
export PATH=
/path/to/ABINIT
/abinit-8.10.3/build/src/98_main/:$PATH
```
