Loading...
墨滴

徐洲更

2021/06/30  阅读:34  主题:全栈蓝

Windows下编译bwa和samtools

MSYS2通过精心整合一些已有的工具(如gcc, qt),使得在Windows上也能使用类unix环境,调用类unix开发的软件。

它的官方地址为: https://www.msys2.org/

Cygwin尝试提供一个POSIX兼容环境,使得原本能在类unix环境里运行的软件,不需要经过太多修改就能直接在Windows上使用。它的特点是大而全,而MSYS2基于Cygwin提供优秀环境,使用了优秀的包管理工具pacman,更倾向于尝试提供一个构建原生Windows软件的环境。

安装步骤

第一步:在官网上下载MSYS2的安装包

e地址: https://github.com/msys2/msys2-installer/releases/download/2021-06-04/msys2-x86_64-20210604.exe

第二步: 运行MSYS2的安装程序,注意记录的你安装路径,我是修改了默认的安装路径为 D:\MSYS2

Fig1
Fig1

安装成功之后,你的菜单栏里就有了一个MSYS2的启动方式

Fig2
Fig2

第三步: 更新pacman的包数据库

pacman -Syu
#-S 表示同步 Sync
#u: -u --sysupgrade
#y: -y --refresh  
Fig3
Fig3

安装结束后,会关闭窗口,之后重新打开, 继续更新剩余的基础包

pacman -Su

第四步: 安装mingw-w64 GCC编译工具套装

pacman -S --needed base-devel mingw-w64-x86_64-toolchain
#  gcc vim cmake
pacman -S gcc vim cmake
# git 版本控制
pacman -S git 

中间会有一些选项,全部enter默认即可。

我们成功的在Windows里拥有了一个类Unix的环境,后续,我们就可以在这里面编译一些软件,这里以bwa和samtools为例

以下是一些必须的依赖项

  • zlib-devel
  • git
  • make
  • gcc

用pacman安装依赖项,如zlib-devel和git

pacman -S zlib-devel
# 查漏补缺
pacman -S --needed base-devel 
pacman -S mingw-w64-x86_64-toolchain
pacman -S git 
pacman -S gcc vim cmake

如果连接git速度有问题,可以尝试按照如下方法配置镜像

git config --global url."https://hub.fastgit.org/".insteadOf "https://github.com/"
git config protocol.https.allow always

编译bwa

bwa只依赖于zlib,因此会很顺利

git clone https://github.com/lh3/bwa
# compile
cd bwa
make 

编译htslib

samtools依赖于htslib,因此需要先编译htslib

paman -S libbz2-devel liblzma-devel

git clone https://github.com/samtools/htslib
cd htslib
git submodule update --init --recursive 
# 不需要root
./configure
make -j 
make install

编译samtools

已知我不需要用到samtools 的 tview功能,则可以设置 --without-curses

git clone https://github.com/samtools/samtools
cd samtools
autoheader
autoconf -Wno-syntax  
./configure --without-curses 
make -j
make install 

如果需要直接在cmd中调用msys2编译的程序,需要将 MSYS2 安装目录下的 usr/bin添加到Windows的环境变量中Path,否则会出现如下报错

Fig4
Fig4

我安装的软件在D盘,因此我添加的路径是 D:\msys64\usr\bin

Fig4
Fig4
Fig5
Fig5

可能报错:

make: *** 没有规则可制作目标“../htslib/htscodecs/htscodecs/arith_dynamic.c”,由“../htslib/hts-object-files” 需求。 停止。

原因: htslib没有克隆完全。

徐洲更

2021/06/30  阅读:34  主题:全栈蓝

作者介绍

徐洲更