---
title: 编译和安装
description: "已获取“sse2neon.h”文件，获取路径：https://github.com/DLTcollab/sse2neon/blob/master/sse2neon.h(https://github.com/DLTcollab/sse2neon/blob/master/sse2neon.h)。"
url: https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpenghisat_02_0006.html
sourcePath: /source/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpenghisat_02_0006.html
indexId: c78e58f047f4f210184db9b5c7c0f2d408ec28f0243b4f413d7351188377480b67
---
# 编译和安装

#### 前提条件

已获取“sse2neon.h”文件，获取路径：https://github.com/DLTcollab/sse2neon/blob/master/sse2neon.h(https://github.com/DLTcollab/sse2neon/blob/master/sse2neon.h)。


#### 操作步骤

1. 执行以下命令，命令解压安装包。
  unzip hisat-0.1.6-beta-source.zip

2. 执行以下命令，进入解压后的目录。
  cd hisat-0.1.6-beta

3. 执行以下命令，设置环境变量。
  export NO_TBB=1

  export POPCNT_CAPABILITY=0

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

  a. 打开“Makefile”文件。
    vi Makefile

  b. 按“i”进入编辑模式，修改“Makefile”文件的BITS=64 aarch64分支，在第143和144行之间插入以下粗体部分内容。目前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”进入编辑模式，修改“Makefile”文件的-m64以及-msse2的AArch64分支，在第165和168行之间插入以下粗体部分内容。Makefile编译选项-m64/-msse2只支持x86，不支持AArch64，需要增加AArch64分支。
    修改前（源文件152 ~159行）：

```
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”进入编辑模式，修改“Makefile”文件的FLAGS参数。
    修改前：

```
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
```


    修改后：

```
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. 执行以下命令，将“sse2neon.h”拷贝到编译器的安装目录下。
  cp sse2neon.h /path/to/GNU/include

8. 执行以下命令，修改“aligner_sw.h”和“sse_util.h”头文件。

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

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

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


    修改后：

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


  c. 按“Esc”键，输入:wq!，按“Enter”保存并退出编辑。
同理修改“sse_util.h”文件。


9. 执行以下命令，进行编译安装。
  make

10. 执行以下命令，添加环境变量。
  export PATH=/path/to/HISAT/hisat-0.1.6-beta:$PATH
