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

#### 操作步骤

1. 使用PuTTY工具，以root用户登录服务器。
2. 执行以下命令解压HISAT2安装包。

```
cd
/path/to/HISAT2
tar -xvf hisat2-2.1.0.tar.gz
cd hisat2-2.1.0
```


3. 执行以下命令设置环境变量。

```
export NO_TBB=1
export POPCNT_CAPABILITY=0
```


4. 执行以下命令修改“Makefile”文件。

  a. 打开“Makefile”文件。

```
vi Makefile
```


  b. 按“i”进入编辑模式，修改文件的“BITS=64 aarch64”分支，在第140和141行之间插入以下粗体部分内容。
    目前“BITS=64”只支持x86，不支持aarch64，需要新增一个aarch64的分支。

    修改前：

```
BITS=32
ifeq (x86_64,$(shell uname -m))
BITS=64
endif
```


    修改后：

```
BITS=32
ifeq (x86_64,$(shell uname -m))
BITS=64
endif
ifeq (aarch64,$(shell uname -m))
BITS=64
endif
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
5. 执行以下命令修改“Makfile”文件。

  a. 打开“Makefile”文件。

```
vi Makefile
```


  b. 按“i”进入编辑模式，修改文件的-m64以及-msse2的aarch64分支，在第159和160行之间插入以下粗体部分内容。
    “Makefile”编译选项-m64/-msse2只支持x86，不支持aarch64，需要增加aarch64分支。

    修改前（源文件149 ~156行）：

```
ifeq (32,$(BITS))
BITS_FLAG = -m32
endif
ifeq (64,$(BITS))
BITS_FLAG = -m64
endif
SSE_FLAG=-msse2
```


    修改后：

```
ifeq (32,$(BITS))
BITS_FLAG = -m32
endif
ifeq (64,$(BITS))
BITS_FLAG = -m64
endif
SSE_FLAG=-msse2
ifeq (aarch64,$(shell uname -m))
BITS_FLAG =
SSE_FLAG =
endif
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
6. 执行以下命令修改“Makefile”文件。

  a. 打开“Makefile”文件。

```
vi Makefile
```


  b. 按“i”进入编辑模式，修改文件的FLAGS参数。
    修改前：

```
EXTRA_FLAGS += -DPOPCNT_CAPABILITY
DEBUG_FLAGS    = -O0 -g3 $(BIToS_FLAG) $(SSE_FLAG)
DEBUG_DEFS     = -DCOMPILER_OPTIONS="\"$(DEBUG_FLAGS) $(EXTRA_FLAGS)\""
RELEASE_FLAGS  = -O3 $(BITS_FLAG) $(SSE_FLAG) -funroll-loops -g3
RELEASE_DEFS   = -DCOMPILER_OPTIONS="\"$(RELEASE_FLAGS) $(EXTRA_FLAGS)\""
NOASSERT_FLAGS = -DNDEBUG
FILE_FLAGS     = -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
```


    修改后：

```
EXTRA_FLAGS +=
DEBUG_FLAGS    = -O0 -g3 $(BIToS_FLAG) $(SSE_FLAG) -funroll-loops -std=c++98
DEBUG_DEFS     = -DCOMPILER_OPTIONS="\"$(DEBUG_FLAGS) $(EXTRA_FLAGS)\""
RELEASE_FLAGS  = -O3 $(BITS_FLAG) $(SSE_FLAG) -funroll-loops -g3 -std=c++98 -Xlinker --allow-multiple-definition
RELEASE_DEFS   = -DCOMPILER_OPTIONS="\"$(RELEASE_FLAGS) $(EXTRA_FLAGS)\""
NOASSERT_FLAGS = -DNDEBUG
FILE_FLAGS     = -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
7. 执行以下命令修改“Makefile”文件。

  a. 打开“Makefile”文件。

```
vi Makefile
```


  b. 按“i”进入编辑模式，修改文件的第23行INC参数。
    修改前：

```
INC =
```


    修改后：

```
INC = -I.
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
8. 执行以下命令修改“aligner_sw.h”和“sse_util.h”头文件。

  a. 打开“aligner_sw.h”头文件。

```
vi aligner_sw.h
```


  b. 按“i”进入编辑模式，将“#include <emmintrin.h>”替换为“#include <sse2neon.h>”。
    修改前：

```
#include <emmintrin.h>
```


    修改后：

```
#include <sse2neon.h>
```


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
  d. 修改“sse_util.h”文件，详细请参考    8.a
~    8.c
。
9. 执行以下命令下载“sse2neon.h”头文件。

```
wget https://raw.githubusercontent.com/DLTcollab/sse2neon/master/sse2neon.h
```


10. 执行以下命令进行编译安装。

```
make
```
