ARM软件编译
参考
x86移植到鲲鹏常见编译脚本、编译选项移植、builtin函数、内联汇编函数替换汇总
在GCC 9.1.0版本,支持了鲲鹏处理器所兼容的ARM v8指令集、TaiShan v110流水线。
使用方法:
在GCC for openEuler编译器、毕昇编译器、GCC编译器高于9.1.0版本上,并在CFLAGS、CPPFLAGS里增加编译选项:
-mtune=tsv110 -march=armv8-a
https://hpc.ilri.cgiar.org/list-of-software
http://ftp.genek.cn:8888/Share/linux_software/
常见报错¶
c++: error: unrecognized command-line option ‘-mbmi2’`-mbmi2` 是一个 GCC 编译器的命令行选项,用于启用针对支持 BMI2(Bit Manipulation Instruction Set 2)的处理器架构的优化。BMI2 是 Intel 和 AMD 处理器的一组指令集扩展,旨在提高位操作的性能。 解决:移除该编译选项c++: error: unrecognized command-line option ‘-mpopcnt’-mpopcnt 是 GCC 编译器的一个选项,用于启用对 POPCNT 指令的支持。POPCNT 是一种位操作指令,用于快速计算一个二进制数中“1”的个数,通常可用于优化与位操作相关的算法。 解决:移除该编译选项
公共软件安装规范¶
慎用 root 安装各类依赖库、python 包、perl 模块等,以免导致各节点环境不一致、环境混乱,也没法做版本管理。root 非必要不使用。
zlib、gsl、zstd、xz、hdf5等各类依赖均使可使用普通账号源码编译,然后写好modulefile,使用时module载入即可。公共环境禁止使用
conda安装任何软件,如果无法避免,则在singularity镜像中使用conda安装所需的软件,用户调用该镜像即可。perl 所需的模块可以安装在 module 的 perl 中,基准版本为
arm/perl/5.34.0。R 包可以安装在 module 的 R 中,基本版本为
arm/r/4.4.1。由于 python 包更新频繁、各个软件依赖的 python 版本区别较大,因此每个应用软件依赖的 python 包均应该安装在该软件目录内(使用
--prefix指定安装目录),而不是在系统或公共 python 目录内,modulefile文件中使用PYTHONPATH环境变量指定路径来引用安装的包。modulefile文件命名均采用小写字母,所有依赖 python 的软件,其modulefile文件名中均应指定 python 版本,如arm/rnaframework/2.9.2-py3.11arm/ntsynt/1.0.2-py3.9arm/snpbinner/1.0.0-py2.7;使用了 MPI 的软件,modulefile文件命名中指定使用了哪个MPI,如arm/gflow/0.1.7-openmpiarm/gromacs/2019.5-hmpi等。每个软件的
modulefile文件中均应包含软件的项目地址,github地址优先,方便跟踪。所有软件源码在 package 目录内均应单独建目录,然后在该目录内下载该软件的各种版本、进行编译等,所有软件源码的
tar.gz源码包尽量保留。软件中若有头文件(
xxx.h),应使用CPATH指定路径。软件中若有静态链接库(
xxx.a),应使用LIBRARY_PATH指定路径。软件中若有动态链接库(
xxx.so),应使用LD_LIBRARY_PATH指定路径。软件中若有 pkgconfig 文件(
xxx.pc),应使用PKG_CONFIG_PATH指定路径。软件中若有 cmake 模块文件(
xxx.cmake),应使用CMAKE_PREFIX_PATH指定路径。java 写的 jar 软件,如果没有调用脚本,可以按如下方式编写调用脚本以方便使用,以 trimmomatic 为例
使用#!/bin/bash SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" JAR_FILE="${SCRIPT_DIR}/trimmomatic-0.39.jar" if [[ ! -f "$JAR_FILE" ]]; then echo "错误:找不到 $JARAR_FILE" exit 1 fi java -jar "$JAR_FILE" "$@"$ trimmomatic.sh Usage: PE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-summary <statsSummaryFile>] [-quiet] [-validatePairs] [-basein <inputBase> | <inputFile1> <inputFile2>] [-baseout <outputBase> | <outputFile1P> <outputFile1U> <outputFile2P> <outputFile2U>] <trimmer1>... or: SE [-version] [-threads <threads>] [-phred33|-phred64] [-trimlog <trimLogFile>] [-summary <statsSummaryFile>] [-quiet] <inputFile> <outputFile> <trimmer1>... or: -version
静态编译¶
参考:
$ ./configure
checking for gawk... gawk
checking for gcc... gcc
checking whether the C compiler works... no
configure: error: in '/share/home/software/package/samtools/samtools-1.22.1':
configure: error: C compiler cannot create executables
See 'config.log' for more details
# 解决
yum install glibc-static libxcrypt-static libstdc++-static
在 rocky8 上分别编译动态 samtools 和静态 samtools,然后在 centos7 上运行测试。
可以看到静态的 samtools 文件较大,但可以正常运行,动态的 samtools 文件较小,但依赖高版本的 glibc。
$ ldd samtools_static
not a dynamic executable
$ ldd samtools_dynamic
./samtools_d2: /lib64/libm.so.6: version 'GLIBC_2.23' not found (required by ./samtools_d2)
linux-vdso.so.1 => (0x00007fff33b8a000)
/usr/local/bin/snoopy/lib/libsnoopy.so (0x00007fe3ca389000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fe3ca16d000)
libz.so.1 => /lib64/libz.so.1 (0x00007fe3c9f57000)
libm.so.6 => /lib64/libm.so.6 (0x00007fe3c9c55000)
libbz2.so.1 => /lib64/libbz2.so.1 (0x00007fe3c9a45000)
liblzma.so.5 => /lib64/liblzma.so.5 (0x00007fe3c981f000)
...
libcrypto.so.10 => /lib64/libcrypto.so.10 (0x00007fe3c66ca000)
librt.so.1 => /lib64/librt.so.1 (0x00007fe3c64c2000)
libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007fe3c62b2000)
libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007fe3c60ae000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fe3c5e95000)
libsasl2.so.3 => /lib64/libsasl2.so.3 (0x00007fe3c5c78000)
libselinux.so.1 => /lib64/libselinux.so.1 (0x00007fe3c5a51000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fe3c581a000)
libpcre.so.1 => /lib64/libpcre.so.1 (0x00007fe3c55b8000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007fe3c53b5000)
$ ll -h
-rwxr-xr-x 1 software software 14M Sep 21 00:49 samtools_static
-rwxr-xr-x 1 software software 9.2M Sep 21 00:13 samtools_dynamic
$ ./samtools_dynamic
./samtools_d2: /lib64/libm.so.6: version 'GLIBC_2.23' not found (required by ./samtools_d2)
$ ./samtools_static --version
samtools 1.22.1
Using htslib 1.22.1
Copyright (C) 2025 Genome Research Ltd.
Samtools compilation details:
Features: build=configure curses=no
CC: gcc
CPPFLAGS:
CFLAGS: -Wall -g -O2
LDFLAGS: -static
HTSDIR: htslib-1.22.1
LIBS:
CURSES_LIB:
HTSlib compilation details:
Features: build=configure libcurl=no S3=no GCS=no libdeflate=no lzma=yes bzip2=no plugins=no htscodecs=1.6.4
CC: gcc
CPPFLAGS:
CFLAGS: -Wall -g -O2 -fvisibility=hidden
LDFLAGS: -fvisibility=hidden
HTSlib URL scheme handlers present:
built-in: file, data, preload
crypt4gh-needed: crypt4gh
mem: mem
autotools¶
一、编译阶段(生成 .o)
| 选项 / 变量 | 作用 | 典型值 |
|---|---|---|
CFLAGS / CXXFLAGS | 让代码本身与位置无关(后续可能进 .so)或强制静态 | -static -fPIC |
-static | 告诉驱动器 “后续只找静态库” | gcc -static |
-fPIC / -fPIE | 生成位置无关代码(必须 若最终要进 .so) | -fPIC |
-ffunction-sections -fdata-sections | 减小编出静态库体积 | |
CPPFLAGS | 头文件搜索路径 | -I/opt/static/include |
二、链接阶段(生成 可执行文件 / .so / .a)
| 选项 / 变量 | 作用 | 示例 |
|---|---|---|
LDFLAGS | 链接器旗标 + 库搜索路径 | -L/opt/static/lib -static |
-static | 生成 纯静态 ELF(无 .dynamic 段) | gcc -static file.o -o file |
-Wl,-Bstatic | 区间内 只链静态库 | -Wl,-Bstatic -lz -lssl -Wl,-Bdynamic |
-Wl,-Bdynamic | 恢复默认动态链接(与上成对) | 同上 |
-Wl,--whole-archive | 把静态库里 所有 .o 都拉进来(解决循环依赖) | -Wl,--whole-archive -lmylib -Wl,--no-whole-archive |
-Wl,-soname=… | 控制 .so 名字(动态库专用) | |
LIBS | 要链的 具体库简称 | -lreadline -lncursesw |
LIBRARY_PATH | gcc 驱动搜索静态/动态库路径(链接时) | export LIBRARY_PATH=/opt/static/lib |
LD_LIBRARY_PATH | 运行时搜索 .so(对静态链接无意义) |
三、ar / ranlib(打包静态库)
| 工具 | 变量 | 默认 | 说明 |
|---|---|---|---|
ar | AR / ARFLAGS | ar cr | 创建 .a |
ranlib | RANLIB | ranlib | 生成索引,加快链接 |
四、configure 常见开关
| 选项 | 含义 |
|---|---|
--enable-static | 把 软件包自己编出静态库(如 libxxx.a) |
--disable-shared / --enable-shared=no | 禁止生成 .so |
--enable-R-static-lib(R 专属) | 让 R 把 blas/lapack 等静态链进可执行文件 |
--with-static-the-system | 少数包提供,等价于 -static 全套 |
五、静态链接“找不到符号”速查
| 症状 | 检查项 |
|---|---|
ld: cannot find -lxxx | 1. 真没 libxxx.a2. 没加 -L/path |
relocation against … can not be used | 库未用 -fPIC 重编(要进 .so 时) |
undefined reference to symbol` | 顺序错,被依赖的放右边;或用 --whole-archive |
一键静态
export CC="gcc -static"
export CPPFLAGS="-I/opt/static/include"
export LDFLAGS="-L/opt/static/lib -static"
export LIBS="-lssl -lcrypto -lz -ldl -pthread"
./configure --disable-shared --enable-static
make
libtool¶
在编译二进制文件时,在 XXX_LINK中$(CCLD)后面添加-all-static即可起效。一般的LDFLAG、CFLAG等对libtool无效
-static` 的方式测试无效iperf3_LINK = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=link $(CCLD) -all-static $(iperf3_CFLAGS) $(CFLAGS) \
$(iperf3_LDFLAGS) $(LDFLAGS) -o $@
LTCOMPILE = $(LIBTOOL) $(AM_V_lt) --tag=CC $(AM_LIBTOOLFLAGS) \
$(LIBTOOLFLAGS) --mode=compile $(CC) -static $(DEFS) \
$(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
$(AM_CFLAGS) $(CFLAGS)
libtool looks at the parameters of gcc, so you should have something like below
$ cat Makefile
all: libone libtwo
rm *.o
@libtool --mode=link gcc -all-static -o libcombo.a libone.a libtwo.a
libone: one.c
@libtool --mode=compile gcc -c one.c -o one.lo
@libtool --mode=link gcc -static -o libone.a one.lo
libtwo: two.c
@libtool --mode=compile gcc -c two.c -o two.lo
@libtool --mode=link gcc -static -o libtwo.a two.lo
cmake¶
一、控制「库」本身的类型
| 变量 / 指令 | 作用 | 典型值 |
|---|---|---|
BUILD_SHARED_LIBS | 全局开关,ON=动态/OFF=静态 | -DBUILD_SHARED_LIBS=OFF |
add_library(foo STATIC …) | 显式声明 静态库 | |
add_library(foo SHARED …) | 显式声明 动态库 | |
add_library(foo …) 无参数 | 由 BUILD_SHARED_LIBS 决定 |
二、编译阶段(生成 .o)
| 变量 | 说明 | 示例 |
|---|---|---|
CMAKE_C_FLAGS / CMAKE_CXX_FLAGS | 给 所有目标 加选项 | -static -fPIC |
target_compile_options(foo PRIVATE -fPIC) | 只给指定目标加 | |
add_compile_options(-fPIC) | 全局生效 |
若要把静态库 再链进动态库,静态库本身必须带 -fPIC,否则链接时报 can not be used when making a shared object; recompile with -fPIC
三、链接阶段(生成 可执行文件 / .so / .a)
| 变量 | 说明 | 示例 |
|---|---|---|
CMAKE_EXE_LINKER_FLAGS | 可执行文件 链接旗标 | -static |
CMAKE_SHARED_LINKER_FLAGS | 动态库 链接旗标 | |
CMAKE_STATIC_LINKER_FLAGS | 静态库 链接旗标(很少用) | |
target_link_libraries(foo PRIVATE -static) | 对单个目标加 -static | |
target_link_libraries(foo PRIVATE -Wl,-Bstatic -lz -Wl,-Bdynamic) | 区间静态链接 |
纯静态可执行文件: set(CMAKE_EXE_LINKER_FLAGS "-static") 即可让 最终 ELF 无 .dynamic 段
四、查找 & 强制使用 静态库
| 命令 / 变量 | 说明 | 示例 |
|---|---|---|
find_package(ZLIB REQUIRED) | 先找到包 | |
set(ZLIB_USE_STATIC_LIBS ON) | 官方 Find 模块识别后只选 .a | CMake ≥ 3.24 |
find_library(ZLIB_STATIC NAMES z libz PATHS /opt/static/lib) | 手动找 libz.a | |
target_link_libraries(foo PRIVATE ${ZLIB_STATIC}) | 直接给 绝对路径 链入 |
一键静态
cmake -B build -G Ninja \
-DCMAKE_BUILD_TYPE=Release \
-DBUILD_SHARED_LIBS=OFF \
-DCMAKE_EXE_LINKER_FLAGS="-static" \
-DCMAKE_C_FLAGS="-fPIC" \
-DCMAKE_CXX_FLAGS="-fPIC" \
-DZLIB_USE_STATIC_LIBS=ON \
-DCMAKE_INSTALL_PREFIX=/opt/static
cmake --build build
anchorwave¶
项目地址 https://github.com/baoxingsong/anchorwave
git clone https://github.com/baoxingsong/anchorwave.git
cd anchorwave
mv CMakeLists_arm.txt CMakeLists.txt
cmake ./
make
Amber¶
项目地址 https://ambermd.org/GetAmber.php
参考文档 https://ambermd.org/doc12/Amber24.pdf
module load gcc/compiler/gccmodule gcc/hmpi/hmpi
tar xf Amber24.tar.bz2
tar xf AmberTools24.tar.bz2
pip install --prefix=/path/to/amber/ numpy scipy matplotlib
cd amber24_src
$ ./update_amber --update
cd build
run_cmake 文件中 cmake 的参数,然后再运行 run_cmake。 修改后如下,指定安装目录、启用 MPI、禁用 conda
cmake $AMBER_PREFIX/amber24_src \
-DCMAKE_INSTALL_PREFIX=/share/software/app/arm/amber/24/ \
-DCOMPILER=GNU \
-DMPI=TRUE -DCUDA=FALSE -DINSTALL_TESTS=TRUE \
-DDOWNLOAD_MINICONDA=FALSE \
2>&1 | tee cmake.log
run_cmake 运行完成后,再运行 make install 安装。 source /share/software/app/arm/amber/24/amber.sh 后即可使用。
AnnoPRO¶
https://github.com/idrblab/AnnoPRO
依赖库 profeatpy 在 github 上的源码包被删了,无法编译安装这个包。
apbs¶
项目地址
github.com/Electrostatics/apbs
https://apbs.readthedocs.io/en/latest/index.html
$ tar xf apbs-3.4.1.tar.gz
$ cd apbs-3.4.1
$ mkdir build && cd build
$ export APBS_BUILD_DIR=${PWD}
$ export SuiteSparse_DIR="/path/to/suitesparse/"
$ export CMAKE_PREFIX_PATH="/path/to/suitesparse/:$CMAKE_PREFIX_PATH"
$ cmake .. -DUMFPACK_INCLUDES=/path/to/suitesparse/include/suitesparse/umfpack.h -DUMFPACK_LIBRARIES=/path/to/suitesparse/lib64/libumfpack.a -DAMD_INCLUDE_DIR=/path/to/suitesparse/include/suitesparse/ -DAMD_STATIC=/path/to/suitesparse/lib64/libamd.a -DPython3_EXECUTABLE=/usr/bin/python3 -DCMAKE_C_COMPILER=`which gcc` -DCMAKE_CXX_COMPILER=`which g++` -DCMAKE_C_FLAGS="-fopenmp" -DCMAKE_CXX_FLAGS="-fopenmp"
$ make -j
$ make install
Augustus¶
项目地址:https://github.com/Gaius-Augustus/Augustus/
参考 https://github.com/Gaius-Augustus/Augustus/blob/master/docs/INSTALL.md
$ wget http://bioinf.uni-greifswald.de/augustus/binaries/augustus.current.tar.gz
$ tar -xzf augustus.current.tar.gz
$ cd augustus
common.mk 文件,将 COMPGENEPRED = true 更改为 COMPGENEPRED = false,添加 MYSQL = false编译 make augustus
如果需要编译 augustus 及其它相关工具。
$ module load arm/bamtools/2.5.2 arm/htslib/1.21
$ tar -xzf augustus.current.tar.gz
$ cd augustus
$ make
ATLAS¶
$ mkdir build && cd build
$ ../configure --prefix=/path/to/atlas/ -Si archdef 0 -b 64 -D c -DATL_ARM_HARDFP=1 --cripple-atlas-performance
# make -j 20 会报错
$ make && make install
# 查看安装的库
$ $ ls -1 /path/to/atlas/
libatlas.a
libcblas.a
libf77blas.a
liblapack.a
libptcblas.a
libptf77blas.a
BatMeth2¶
项目地址:https://github.com/GuoliangLi-HZAU/BatMeth2
$ git clone https://github.com/GuoliangLi-HZAU/BatMeth2.git
$ cp ~/package/sse2neon.h src/mealign/
$ sed -i.bak 's/<emmintrin.h>/"sse2neon.h"/g' ./src/mealign/ksw.c
$ sed -i.bak 's/-m64/ /g' ./src/Makefile
$ ./configure --prefix=/path/to/batmeth2/
$ make -j20 && make install
BLAT¶
最新版 https://hgdownload.soe.ucsc.edu/admin/,下载 jksrc.xxx.zip,BLAT 位于 kent/src/blat,不容易编译成功。
编译好的 x86 版本 https://hgdownload.soe.ucsc.edu/admin/exe/linux.x86_64/blat/
可编译版本
$ wget https://codeload.github.com/djhshih/blat/tar.gz/v35.1
$ mv v35.1 blat_35.1.tar.gz
$ tar xf blat_35.1.tar.gz
$ cd blat-35.1/
$ make
# 或编译静态库版本
$ CFLAGS="-static -static-libgcc -D_STATIC" make
BerkeleyDB¶
项目地址 https://github.com/berkeleydb/libdb/
$ wget https://github.com/berkeleydb/libdb/releases/download/v5.3.28/db-5.3.28.tar.gz
$ tar xf db-5.3.28.tar.gz
$ cd db-5.3.28/build_unix
$ ../dist/configure --build=aarch64-unknown-linux-gnu --prefix=/path/to/berkeley-db/
$ make -j20 && make install
bmtagger¶
https://ftp.ncbi.nlm.nih.gov/pub/agarwala/bmtagger/
$ wget https://ftp.ncbi.nlm.nih.gov/pub/agarwala/bmtagger/bmtagger.sh
$ wget https://anaconda.org/bioconda/bmfilter/3.101/download/linux-aarch64/bmfilter-3.101-h78569d1_5.tar.bz2
$ wget https://anaconda.org/bioconda/srprism/2.4.24/download/linux-aarch64/srprism-2.4.24-h76f4f2e_5.tar.bz2
$ wget https://conda.anaconda.org/bioconda/linux-aarch64/extract_fullseq-3.101-h78569d1_5.tar.bz2
$ tar xf *bz2
$ ls -1 bin/
bmfilter
extract_fullseq
srprism
$ module load arm/blast/2.16.0
bmtagger.conf#!/bin/sh
echo "bmtagger.sh: You may want to edit bmtagger.conf" >&2
SRPRISM=./bin/srprism
BMFILTER="./bin/bmfilter"
EXTRACT_FA="./bin/extract_fullseq"
#bmfiles="hs/quick_mask/indexes/washu_mask18"
#blastdb="hs/quick_mask/indexes/HUMAN_SCREENING"
#srindex="hs/quick_mask/indexes/HUMAN_SCREENING.srprism"
#TMPDIR="/tmp"
https://ftp.ncbi.nlm.nih.gov/pub/agarwala/bmtagger/bmtools.tar.gz 这个源码包可以独立编译 srprism bmfilter extract_fullseq 但有编译报错。
blast+¶
可以在 https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ 中下载编译好的版本。
$ wget https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ncbi-blast-2.16.0+-aarch64-linux.tar.gz
bwa-mem2¶
项目地址 https://github.com/bwa-mem2/bwa-mem2
# 下载二进制版本
wget https://anaconda.org/bioconda/bwa-mem2/2.2.1/download/linux-aarch64/bwa-mem2-2.2.1-h0010869_6.tar.bz2
cactus¶
项目地址 https://github.com/ComparativeGenomicsToolkit/cactus
git clone https://github.com/ComparativeGenomicsToolkit/cactus.git --recursive
cd cactus
setup.py 文件中22行的 subprocess.run([sys.executable, "-m", "pip", "install", "submodules/sonLib"], check=True) 注释掉,以免将 sonLib 安装到了 python 的默认目录。 make -j20
pip install --prefix=/path/to/cactus/ submodules/sonLib
pip install --prefix=/path/to/cactus/ .
pip install --prefix=/path/to/cactus/ -r toil-requirement.txt
cereal¶
https://github.com/USCiLab/cereal
unittests/CMakeLists.txt unittests/boost/CMakeLists.txt unittests/cpp17/CMakeLists.txt 中所有 -m32 删除
删除 CMakeLists.txt 中部分编译选项
add_compile_options(-Wall -Wextra -pedantic -Wshadow -Wold-style-cast) 更改为 add_compile_options(-Wall -Wextra -pedantic )
add_compile_options(-Werror) 更改为 add_compile_options()
$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/path/to/cereal/ -DBoost_INCLUDE_DIR=/path/to/boost/include/ ..
$ make -j12
$ make install
circos¶
项目地址 https://circos.ca/software/download/circos/
$ wget https://circos.ca/distribution/circos-0.69-10.tgz
$ tar xf circos-0.69-10.tgz
$ cd circos-0.69-10
$ module load arm/perl/5.34.0
# 查看确实的 perl 模块
$ bin/circos -modules|grep missing
missing Font::TTF::Font
missing GD
missing GD::Polyline
missing Math::Bezier
missing Math::Round
missing Math::VecStat
missing Params::Validate
missing Regexp::Common
missing Set::IntSpan
missing Statistics::Basic
missing Text::Format
# 安装缺失的 perl 模块
$ cpanm -l /share/software/app/arm/perl/5.34.0/ Text::Format Statistics::Basic Set::IntSpan Regexp::Common Params::Validate Math::VecStat Math::Round Math::Bezier Font::TTF::Font
# 加载 libgd 用于安装 GD 模块,注意 libgd 版本需要低于 2.3,否则 GD 模块安装会报错
# 报错是高版本的 libgd 中没有 gdlib-config 导致的
$ module load arm/libgd/2.2.5
$ cpanm -l /share/software/app/arm/perl/5.34.0/ GD GD::Polyline
# 测试
$ bin/circos -conf /share/software/app/arm/circos/0.69-10/example/etc/circos.conf
clustalw¶
项目地址 http://www.clustal.org/download/current/
wget http://www.clustal.org/download/current/clustalw-2.1.tar.gz
tar xf clustalw-2.1.tar.gz
cd clustalw-2.1/
./configure --build=arm --prefix=/path/to/clustalw/
make -j20 && make install
cmake¶
直接下载编译好的 aarch64 版本 cmake-3.30.5-linux-aarch64.sh
cppunit¶
https://freedesktop.org/wiki/Software/cppunit/
$ tar xf cppunit-1.13.2.tar.gz
$ cd cppunit-1.13.2
$ ./configure --prefix=/path/to/cppunit/ --build=aarch64-unknown-linux-gnu
$ make -j20 && make install
bowtie2¶
直接下载编译好的二进制文件
https://github.com/BenLangmead/bowtie2/releases
EDTA (todo)¶
https://github.com/liaoherui/AnnoSINE_v2
mamba create -n EDTA2.2 -c conda-forge -c bioconda annosine2 biopython cd-hit coreutils genericrepeatfinder genometools-genometools glob2 tir-learner ltr_finder_parallel ltr_retriever mdust multiprocess muscle openjdk perl perl-text-soundex r-base r-dplyr regex repeatmodeler r-ggplot2 r-here r-tidyr tesorter samtools bedtools LTR_HARVEST_parallel HelitronScanner
glob2
https://github.com/lutianyu2001/TIR-Learner
elai¶
项目地址 https://github.com/haplotype/ELAI
$ git clone https://github.com/haplotype/ELAI
$ cd src
修改 Makefile 文件
CFLAGS += -Wall -fno-math-errno -ffast-math 修改为 CFLAGS += -Wall -fno-math-errno -ffast-math -fsigned-char,即添加 -fsigned-char 编译选项
STATICLIBS += /usr/local/lib/libgsl.a /usr/local/lib/libgslcblas.a 修改为 STATICLIBS += /share/software/app/arm/gsl/2.7/lib/libgsl.a /share/software/app/arm/gsl/2.7/lib/libgslcblas.a
最后编译 make。
Warning
编译时不添加 -fsigned-char 编译选项也能编译成功,但运行不出结果。
测试
cd ../example
$ ../src/elai -g hap.ceu.chr22.inp -p 10 -g hap.yri.chr22.inp -p 11 -g admix-1cm.inp -p 1 -pos hgdp.chr22.pos -o test -s 20 --exclude-nopos --exclude-maf 0.01 --exclude-miss1 -mg 20
emboss¶
项目地址 https://emboss.sourceforge.net/
$ wget https://anaconda.org/bioconda/emboss/6.6.0/download/linux-aarch64/emboss-6.6.0-h70f19aa_11.tar.bz2
eggnog-mapper¶
项目地址 https://github.com/eggnogdb/eggnog-mapper
# 2.1.13
pip install --prefix=/path/to/eggnog-mapper eggnog-mapper
# eggnog-mapper 安装包自带了这几个软件的预编译版,但都是 x86 的,使用时需要载入 arm 版
# eggnog-mapper 会优先使用 $PATH 中有的软件,然后再使用自己安装的
$ module load arm/diamond/2.1.10 arm/prodigal/2.6.3 arm/mmseqs2/16-747c6 arm/hmmer/3.4
$ emapper.py -h
下载数据库
更改代码
将 download_eggnog_data.py 中 BASE_URL = f'http://eggnogdb.embl.de/download/emapperdb-{__DB_VERSION__}' 改为 BASE_URL = f'http://eggnog5.embl.de/download/emapperdb-{__DB_VERSION__}'。
# 2759 是真核数据库,一路 Y 就可以了
$ download_eggnog_data.py -F -f -P -M -H -d 2759
EVM¶
项目地址 https://github.com/EVidenceModeler/EVidenceModeler/
$ tar xf EVidenceModeler-v2.1.0.tar.gz
$ cd EVidenceModeler-v2.1.0
plugins/ParaFly/configure 中第 3123 行的 AM_CXXFLAGS=-m64 注释掉。 $ make
exonerate¶
下载二进制版本
$ wget https://anaconda.org/bioconda/exonerate/2.4.0/download/linux-aarch64/exonerate-2.4.0-he4d9ad3_8.tar.bz2
fastlmm¶
需要替换 Cpp/Inc/BlasLapack.h 中数学库,源码中使用的 intel MKL 数学库。
| intel MKL | openblas | KML |
|---|---|---|
| sscal | cblas_sscal | cblas_sscal |
| dscal | cblas_dscal | cblas_dscal |
| scopy | cblas_scopy | cblas_scopy |
| dcopy | cblas_dcopy | cblas_dcopy |
| sgemv | cblas_sgemv | cblas_sgemv |
| dgemv | cblas_dgemv | cblas_dgemv |
| sgemm | cblas_sgemm | cblas_sgemm |
| dgemm | cblas_dgemm | cblas_dgemm |
| ssyrk | cblas_ssyrk | cblas_ssyrk |
| dsyrk | cblas_dsyrk | cblas_dsyrk |
| spotrf | LAPACKE_spotrf | spotrf_ |
| dpotrf | LAPACKE_dpotrf | dpotrf_ |
| spotrs | LAPACKE_spotrs | spotrs_ |
| dpotrs | LAPACKE_dpotrs | dpotrs_ |
| sgesdd | LAPACKE_sgesdd | sgesdd_ |
| dgesdd | LAPACKE_dgesdd | dgesdd_ |
| ssyevr | LAPACKE_ssyevr | ssyevd_ |
| dsyevr | LAPACKE_dsyevr | dsyevd_ |
| sgelsy | LAPACKE_sgelsy | sgelsy_ |
| dgelsy | LAPACKE_dgelsy | dgelsy_ |
| vsLn | for (BLAS_INT i = 0; i < n; ++i) | vslog2 |
| vdLn | vdlog2 | |
| vsSqrt | for (BLAS_INT i = 0; i < n; ++i) | vssqrt |
| vsSqrt | vdsqrt |
fastqc¶
https://anaconda.org/bioconda/fastqc
直接下载编译好的二进制文件
$ wget https://anaconda.org/bioconda/fastqc/0.12.1/download/noarch/fastqc-0.12.1-hdfd78af_0.tar.bz2
fastp¶
安装依赖库 isa-l,libdeflate,如果没有 libstdc++.a,也需要安装 gcc。最后使用静态库编译fastp,使用时不用另外载入依赖库。
# 设置静态库地址
$ export LIBRARY_PATH=/path/to/isa-l/lib/:/path/to/libdeflate/lib/:/path/to/gcc/lib64/
$ git clone https://github.com/OpenGene/fastp.git
$ cd fastp
$ make -j12 static
fastStructure¶
- python3
项目地址 https://github.com/rajanil/fastStructure/issues/63
原项目基于python2,安装 scipy 出现报错。
因此实际编译安装使用python3的版本 https://github.com/jashapiro/fastStructure
git clone https://github.com/jashapiro/fastStructure.git
cd fastStructure
git checkout py3
部分代码需要更改
parse_bed.pyx 中
25 行的Nbytes = Nindiv/4+(Nindiv%4>0)*1 更改为 Nbytes = Nindiv//4+(Nindiv%4>0)*1
48 行的 print "This is not a valid bed file" 更改为 print("This is not a valid bed file")
fastStructure.pyx 中
305 行的 print "Failed" 更改为 print("Failed")
$ module load arm/gsl/2.4
$ pip install --prefix=/path/to/faststructure/ numpy scipy cython
$ cd var
$ PYTHONPATH=/path/to/faststructure/1.0/lib64/python3.9/site-packages/:/path/to/faststructure/1.0/lib/python3.9/site-packages/ python setup.py build_ext -f --inplace
$ cd ..
$ PYTHONPATH=/path/to/faststructure/1.0/lib64/python3.9/site-packages/:/path/to/faststructure/1.0/lib/python3.9/site-packages/ python setup.py build_ext -f --inplace
# 测试,将 ./var/ 加入 PYTHONPATH,否则出现 allelefreq 相关报错
$ PYTHONPATH=/path/to/faststructure/1.0/lib64/python3.9/site-packages/:/path/to/faststructure/1.0/lib/python3.9/site-packages/:$PWD python structure.py -h
运行测试算例
PYTHONPATH=//path/to/faststructure/faststructure/1.0/lib64/python3.9/site-packages/://path/to/faststructure/faststructure/1.0/lib/python3.9/site-packages/ python structure.py -K 3 --input=test/testdata --output=testoutput_simple --full --seed=100
出现报错,暂时未能解决。
Traceback (most recent call last):
File "//path/to/faststructure/fastStructure/structure.py", line 176, in <module>
Q, P, other = fastStructure.infer_variational_parameters(G, params['K'], \
File "fastStructure.pyx", line 99, in fastStructure.infer_variational_parameters
psi.update(G, pi)
TypeError: Cannot convert allelefreq.AlleleFreq to allelefreq.AlleleFreq
参考
https://github.com/rajanil/fastStructure/issues/63
https://github.com/rajanil/fastStructure/issues/81
- python2
$ module load arm/python/2.7.18
$ git clone https://github.com/rajanil/fastStructure/
$ cd fastStructure
$ pip install --prefix=/path/to/fastStructure/ numpy
# 设置编译参数 -fallow-argument-mismatch,否则 scipy 编译过程中出现报错 Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
$ export FCFLAGS="-fallow-argument-mismatch"
$ export FFLAGS="-fallow-argument-mismatch"
$ PYTHONPATH=/path/to/lib/python2.7/site-packages/ pip install --prefix=/path/to/fastStructure/ scipy Cython matplotlib
parse_bed.pyx 和 fastStructure.pyx 顶部添加 # cython: language_level=2 表示使用 python2 编译 cpython $ cd vars
$ PYTHONPATH=/path/to/lib/python2.7/site-packages/ python setup.py build_ext -f --inplace
$ cd ..
$ PYTHONPATH=/path/to/lib/python2.7/site-packages/ python setup.py build_ext -f --inplace
# 测试
$ PYTHONPATH=/path/to/lib/python2.7/site-packages/:$PWD/vars/ python structure.py -h
PYTHONPATH=//path/to/faststructure/faststructure/1.0/lib/python2.7/site-packages/ python structure.py -K 3 --input=test/testdata --output=testoutput_simple --full --seed=100
FastTree¶
$ wget http://meta.microbesonline.org/fasttree/FastTree.c
$ gcc -DOPENMP -DUSE_DOUBLE -fopenmp -O3 -march=armv8.2-a -mtune=tsv110 -finline-functions -funroll-loops -Wall -o FastTreePar-2.1.11 FastTree.c -lm
$ export OMP_NUM_THREADS=128
fftw¶
参考
$ module load arm/openmpi/5.0.5
$ wget wget https://fftw.org/pub/fftw/fftw-3.3.8.tar.gz
$ tar xf fftw-3.3.8.tar.gz
$ cd fftw-3.3.8/
$ ./configure --prefix=/path/to/fftw/ --enable-single --enable-float --enable-neon --enable-shared --enable-threads --enable-openmp --enable-mpi CFLAGS="-O3 -fomit-frame-pointer -fstrict-aliasing"
$ make -j20
$ make install
flye¶
项目地址 https://github.com/mikolmogorov/Flye/
wget wget https://anaconda.org/bioconda/flye/2.9.5/download/linux-aarch64/flye-2.9.5-py39h989d1c4_2.tar.bz2
tar xf flye-2.9.5-py39h989d1c4_2.tar.bz2
GATK¶
intel GKL
# 下载这个 arm64 分支
git clone -b devel https://github.com/syalavarthi/GKL.git
cd GKL
gradle-5.6-bin.zip,将其再放在 /share/home/software/.gradle/wrapper/dists/gradle-5.6-bin/gradle-5.6-bin.zip,将 gradle/wrapper/gradle-wrapper.properties 中的 distributionUrl=https\://services.gradle.org/distributions/gradle-3.2.1-all.zip 替换为 distributionUrl=file:/share/home/software/.gradle/wrapper/dists/gradle-5.6-bin/gradle-5.6-bin.zip。 运行 ./gradlew build
git clone https://github.com/IntelLabs/GKL.git
gcta¶
项目地址 https://github.com/jianyangqt/gcta
注意 openblas 的版本,较高的版本中部分 API 有变化(函数 dpotri_)会导致编译报错,测试 0.3.13 可正常编译。
git submodule update --init
git clone https://github.com/jianyangqt/gcta.git
cd gcta
mdir build; cd build
module load arm/gcc/12.2.0
export EIGEN3_INCLUDE_DIR=/path/to/eigen/3.4.0/include/eigen3
export SPECTRA_LIB=/path/to/spectra/1.1.0/include/
export BOOST_LIB=/path/to/boost/1.72.0/include/
export OPENBLAS=/path/to/openblas/0.3.13/
cmake ..
make -j20
静态编译
在 CMAakeList.txt 中 PROJECT 之前 添加 set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY),否则会出现 cannot find -lgcc_s 的报错。
添加 gfortran 库依赖,即,将
target_link_libraries(gcta64 mainV1 ${libs_list} Pgenlib z sqlite3 zstd gsl gslcblas m -Wl,--start-group ${BLAS_LIB} -Wl,--end-group gomp -Wl,--whole-archive -lpthread -Wl,--no-whole-archive m dl)
替换为
target_link_libraries(gcta64 mainV1 ${libs_list} Pgenlib z sqlite3 zstd gsl gslcblas m -Wl,--start-group ${BLAS_LIB} -Wl,--end-group gomp -Wl,--whole-archive -lpthread -Wl,--no-whole-archive m dl gfortran)
$ cd build
$ cmake -DCMAKE_CXX_FLAGS="-static"
$ make -j VERBOSE=1
$ ldd gcta64
not a dynamic executable
gcc¶
$ wget https://ftp.gnu.org/gnu/gcc/gcc-10.3.0/gcc-10.3.0.tar.xz
$ tar xf gcc-10.3.0.tar.xz
$ cd gcc-10.3.0
$ contrib/download_prerequisites
$ mkdir build
$ cd build
../configure \
--prefix=/path/to/gcc \
--enable-languages=all \
--enable-threads=posix \
--enable-shared \
--enable-static \
--disable-multilib \
--enable-libatomic \
--enable-libgomp \
--enable-libstdcxx \
$ make -j20 && make install
--enable-languages=all启用 GCC 支持的所有语言-enable-threads=posix指定线程模型--enable-shared启用共享库的生成--enable-static启用静态库的生成,否则部分软件编译时报错/usr/bin/ld: cannot find -lstdc++--diskable-multilib禁止多库支持,只编译 64 位库--enable-libatomic启用 libatomic 库,否则部分软件编译时报错/usr/bin/ld: cannot find -latomic。--enable-libgomp启用 libgomp 库(OpenMP 支持)--enable-libstdcxx启用 C++ 标准库
GEMMA¶
项目地址 https://github.com/genetics-statistics/GEMMA/
安装依赖库 gsl,openblas,如果没有 libstdc++.a,也需要安装 gcc。最后使用静态库编译 GEMMA,使用时不用另外载入依赖库。
# 使用静态链接库编译,设置环境变量
$ export LIBRARY_PATH=/path/to/gsl/lib/:/path/to/openblas/lib/:/path/to/gcc/lib64/
$ wget https://github.com/genetics-statistics/GEMMA/archive/refs/tags/v0.98.5.tar.gz
$ mv v0.98.5.tar.gz gemma-0.98.5.tar.gz
$ tar xf gemma-0.98.5.tar.gz
$ cd GEMMA-0.98.5/
$ make -j12 static
GenABEL¶
项目地址 https://github.com/GenABEL-Project/GenABEL
$ module load arm/r/4.4.1
$ wget https://cran.r-project.org/src/contrib/Archive/GenABEL.data/GenABEL.data_1.0.0.tar.gz
$ wget https://cran.r-project.org/src/contrib/Archive/GenABEL/GenABEL_1.8-0.tar.gz
$ tar xf GenABEL_1.8-0.tar.gz
$ R CMD INSTALL GenABEL.data_1.0.0.tar.gz
typedef int Sint;,将 GenABEL/src/ctest.h 中的 Sint 替换为 int,sed -i 's/Sint/int/g' GenABEL/src/ctest.h。 修改 GenABEL/src/fexact.c 文件,添加头文件 #include <Rinternals.h> ;
将 PROBLEM "Bug in FEXACT: gave negative key" RECOVER(NULL_ENTRY); 替换为 Rf_error("Bug in FEXACT: gave negative key");;
将 ROBLEM "FEXACT error %d.\n%s", icode, mes RECOVER(NULL_ENTRY); 替换为 Rf_error("FEXACT error %d.\n%s", icode, mes);
安装 R CMD INSTALL GenABEL。
gffread¶
项目地址 https://github.com/gpertea/gffread
$ git clone https://github.com/gpertea/gffread
$ cd gffread/
$ make release
GFlow¶
项目地址:https://github.com/gflow/GFlow
$ git clone https://github.com/gflow/GFlow.git
$ cd GFlow
# 加载 petsc
$ module load arm/petsc/3.22.2-openmpi
# 下载测试算例
$ wget https://github.com/gflow/GFlow/releases/download/v0.1.7-alpha/inputs.tar.gz
在 output.h 中添加一行代码,否则编译时会出现 undefined reference to 'MAX' 的报错。
#define MAX(a, b) ((a) > (b) ? (a) : (b))
make,生成可执行文件 gflow.x 。 运行测试算例
$ tar xf inputs.tar.gz
$ cp input/* .
# 修改 execute_example.sh 中 PETSC_DIR 的位置为 petsc 的安装目录
$ sh execute_example.sh
GLnexus¶
项目地址 https://github.com/dnanexus-rnd/GLnexus
bioconda 中有一个 aarch64 的预编译版本,下载使用报错,看报错应该是在 x86 上编译的。https://anaconda.org/bioconda/glnexus/1.4.1/download/linux-64/glnexus-1.4.1-h17e8430_5.tar.bz2
以下为源码编译。
下载源码
git clone https://github.com/dnanexus-rnd/GLnexus
cd GLnexus
删除 CMakeLists.txt 中所有的 -march=ivybridge -msse4.2 -DHAVE_SSE42 -mpclmul
将 src/genotyper.cc 中的 __asm__(".symver logf,logf@GLIBC_2.2.5");注释。
运行 cmake .
下载所有依赖软件至当前路径下,然后 cp *gz *bz2 *zip external/src/。
https://github.com/giacomodrago/fcmm/archive/v1.0.1.zip 404 了,换成 https://github.com/sigiesec/fcmm/archive/v1.0.1.zip。
https://github.com/samtools/htslib/releases/download/1.9/htslib-1.9.tar.bz2
https://github.com/facebook/rocksdb/archive/v6.29.3.tar.gz
https://github.com/jbeder/yaml-cpp/archive/yaml-cpp-0.6.3.zip
https://github.com/vit-vit/CTPL/archive/v.0.0.2.zip
https://github.com/giacomodrago/fcmm/archive/v1.0.1.zip
https://github.com/gabime/spdlog/archive/v1.8.2.tar.gz
https://capnproto.org/capnproto-c++-0.7.0.tar.gz
https://github.com/philsquared/Catch/archive/v1.12.2.zip
$ ls -1 external/src/{*gz,*zip,*bz2}
external/src/capnproto-c++-0.7.0.tar.gz
external/src/htslib-1.9.tar.bz2
external/src/v.0.0.2.zip
external/src/v1.0.1.zip
external/src/v1.8.2.tar.gz
external/src/v6.29.3.tar.gz
external/src/yaml-cpp-0.6.3.zip
然后将所有cmake中下载相关的动作注释掉
find external/src/ -name "*-impl.cmake" |xargs -i sed -i '1,10s/^/# /' {}
将 src/BCFKeyValueData.cc 中第 467 至 471 行注释,如下所示。
//#ifndef __x86_64__
//if (uint64_t(data.data) % sizeof(::capnp::word)) {
// return Status::Failure("BCFBucketReader: input buffer isn't word-aligned");
//}
//#endif
make 编译,中间会有一次 capnp 相关的报错,继续 make 编译。然后报错 /usr/bin/ld: cannot find -lsnappy
/usr/bin/ld: cannot find -lzstd
/usr/bin/ld: cannot find -lstdc++
加载相关依赖 module load arm/zstd/1.5.6 arm/gcc/12.2.0 arm/snappy/1.2.1,继续 make。这几个依赖不可一开始就是加载,否则依赖 yaml-cpp 编译不通过。
出现如下信息表明 glnexus 编译成功,后面测试部分报错不用管。
[ 76%] Linking CXX executable glnexus_cli
[ 77%] Built target glnexus_cli
[ 78%] Creating directories for 'catch'
[ 79%] Performing download step (download, verify and extract) for 'catch'
测试
$ ./glnexus_cli -h
[2871613] [2025-03-09 19:12:19.710] [GLnexus] [info] glnexus_cli release v1.4.5-0-gfae491b-dirty Mar 9 2025
[2871613] [2025-03-09 19:12:19.710] [GLnexus] [warning] jemalloc absent, which will impede performance with high thread counts. See https://github.com/dnanexus-rnd/GLnexus/wiki/Performance
Usage: ./glnexus_cli [options] /vcf/file/1 .. /vcf/file/N
Merge and joint-call input gVCF files, emitting multi-sample BCF on standard output.
Options:
--dir DIR, -d DIR scratch directory path (mustn't already exist; default: ./GLnexus.DB)
--config X, -c X configuration preset name or .yml filename (default: gatk)
--bed FILE, -b FILE three-column BED file with ranges to analyze (if neither --range nor --bed: use full length of all contigs)
--list, -l expect given files to contain lists of gVCF filenames, one per line
--more-PL, -P include PL from reference bands and other cases omitted by default
--squeeze, -S reduce pVCF size by suppressing detail in cells derived from reference bands
--trim-uncalled-alleles, -a remove alleles with no output GT calls in postprocessing
--mem-gbytes X, -m X memory budget, in gbytes (default: most of system memory)
--threads X, -t X thread budget (default: all hardware threads)
--help, -h print this help message
Configuration presets:
Name CRC32C Description
gatk 1926883223 Joint-call GATK-style gVCFs
gatk_unfiltered 4039280095 Merge GATK-style gVCFs with no QC filters or genotype revision
xAtlas 1991666133 Joint-call xAtlas gVCFs
xAtlas_unfiltered 221875257 Merge xAtlas gVCFs with no QC filters or genotype revision
weCall 2898360729 Joint-call weCall gVCFs
weCall_unfiltered 4254257210 Merge weCall gVCFs with no filtering or genotype revision
DeepVariant 2932316105 Joint call DeepVariant whole genome sequencing gVCFs
DeepVariantWGS 2932316105 Joint call DeepVariant whole genome sequencing gVCFs
DeepVariantWES 1063427682 Joint call DeepVariant whole exome sequencing gVCFs
DeepVariantWES_MED_DP 2412618877 Joint call DeepVariant whole exome sequencing gVCFs, populating 0/0 DP from MED_DP instead of MIN_DP
DeepVariant_unfiltered 3285998180 Merge DeepVariant gVCFs with no QC filters or genotype revision
Strelka2 395868656 [EXPERIMENTAL] Merge Strelka2 gVCFs with no QC filters or genotype revision
GxS 3929547104 [EXPERIMENTAL] merging for GxS
GMAP¶
项目地址 http://research-pub.gene.com/gmap/src/
$ wget http://research-pub.gene.com/gmap/src/gmap-gsnap-2023-12-01.tar.gz
$ tar xf gmap-gsnap-2023-12-01.tar.gz
$ cd gmap-2023-12-01/
$ ./configure --prefix=/path/to/gmap/ --with-simd-level=arm
gnuplot¶
$ wget http://nchc.dl.sourceforge.net/project/gnuplot/gnuplot/5.4.9/gnuplot-5.4.9.tar.gz
$ tar xf gnuplot-5.4.9.tar.gz
$ cd gnuplot-5.4.9
$ module load arm/lua/5.4.7
$ ./configure --prefix=/path/gnuplot/ --with-qt=no
$ make -j20 && make install
gromacs¶
参考
$ module load arm/openmpi/5.0.5 arm/openblas/0.3.28
$ wget http://ftp.gromacs.org/pub/gromacs/gromacs-2019.5.tar.gz
$ tar xf gromacs-2019.5.tar.gz
$ cd gromacs-2019.5/
$ mkdir build && cd build/
$ cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/gromacs/ -DGMX_SIMD=ARM_NEON_ASIMD -DGMX_OPENMP=on -DGMX_MPI=on -DGMX_X11=off -DGMX_GPU=off -DFFTWF_LIBRARY=/path/to/lib//libfftw3f.so -DFFTWF_INCLUDE_DIR=/path/to/include
$ make -j20
$ make install
$ cmake .. -DGMX_GPU=CUDA -DGMX_BUILD_OWN_FFTW=ON -DCMAKE_INSTALL_PREFIX=/path/to/gromacs/
$ make -j20
$ make install
http://www.fftw.org/fftw-3.3.8.tar.gz。 $ cmake .. -DGMX_GPU=CUDA -DGMX_BUILD_OWN_FFTW=ON -DCMAKE_C_COMPILER=`which gcc` -DCMAKE_INSTALL_PREFIX=/path/to/GROMACS/ -DGMX_BUILD_OWN_FFTW_URL=/path/to/fftw-3.3.8.tar.gz -DGMX_BUILD_OWN_FFTW_MD5=8aac833c943d8e90d51b697b27d4384d
$ make -j20 && make install
https://github.com/amd/amd-fftw/issues/3
$ module load arm/plumed/2.9.2-bisheng arm/hyper-mpi/24.6.30_bisheng
$ wget http://ftp.gromacs.org/pub/gromacs/gromacs-2021.7.tar.gz
$ tar xf gromacs-2021.7.tar.gz
$ cd gromacs-2021.7/
# 为 plumed 打 patch
$ plumed-patch -p -e gromacs-2021.7
$ mkdir build && cd build/
$ cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/2021.7-plumed -DGMX_SIMD=ARM_NEON_ASIMD -DGMX_THREAD_MPI=OFF -DGMX_OPENMP=on -DGMX_MPI=on -DGMX_X11=off -DGMX_GPU=off -DBUILD_SHARED_LIBS=OFF -DGMX_PREFER_STATIC_LIBS=ON -DGMXAPI=OFF -DCMAKE_C_COMPILER=`which mpicc` -DCMAKE_CXX_COMPILER=`which mpic++` -DGMX_FFT_LIBRARY=fftw3 -DCMAKE_PREFIX_PATH=/path/to/fftw3/
$ make -j96 && make install
hal2vg¶
项目地址 https://github.com/glennhickey/hal2vg
git clone https://github.com/glennhickey/hal2vg.git --recursive
cd hal2vg
sed -i '1,$s/std=c++11/std=c++17/` deps/libbdsg-easy/deps/DYNAMIC/CMakeLists.txt
# 需要运行 3 次 make
make -j
make -j
make -j
./hal2vg
HiCPlotter¶
项目地址 https://github.com/akdemirlab/HiCPlotter
$ module load arm/python/2.7.18
$ pip install --prefix=/path/to/hicplotter/ bx-python==1.16.6
# 设置这2个环境变量,否则 scipy 安装编译报错,Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
$ export FCFLAGS="-fallow-argument-mismatch"
$ export FFLAGS="-fallow-argument-mismatch"
$ pip install --prefix=/path/to/hicplotter/ scipy==1.2.3
$ pip install --prefix=/path/to/hicplotter/ matplotlib==1.4.3
# 在 mpl_toolkits 目录下添加 __init__.py,否则会出现报错 ImportError: No module named mpl_toolkits.axes_grid1
$ touch /path/to/hicplotter/lib/python2.7/site-packages/mpl_toolkits/__init__.py
$ tar xf HiCPlotter-0.6.6.tar.gz
$ cd HiCPlotter-0.6.6/
# 编辑 HiCPlotter.py,在首行添加 #!/bin/env python
$ chmod +x HiCPlotter.py
$ cp HiCPlotter.py /path/to/hicplotter/bin/
$ /path/to/hicplotter/bin/HiCPlotter.py -h
HiC-Pro¶
HiC-Pro-2.11.4
module load arm/python/2.7.18 arm/lzo/2.10
pip install --prefix=/path/to/hic-pro/ bx-python==0.8.1 numpy==1.8.2 pysam==0.8.3
# 设置这2个环境变量,否则 scipy 安装编译报错,Error: Rank mismatch between actual argument at (1) and actual argument at (2) (scalar and rank-1)
export FCFLAGS="-fallow-argument-mismatch"
export FFLAGS="-fallow-argument-mismatch"
pip install --prefix=/path/to/hic-pro/ scipy==1.2.3
tar xf HiC-Pro-2.11.4.tar.gz
cd HiC-Pro-2.11.4/
# 载入相关依赖软件,需要安装这3个R包,ggplot2 (>2.2.1) RColorBrewer grid
module load arm/r/4.4.1 arm/bowtie2/2.5.4 arm/samtools/1.21
# 编辑 config-install.txt,PREFIX = /path/to/hic-pro/
make configure
make CONFIG_SYS=config-install.txt
pip install --prefix=/path/to/hic-pro/ "numpy<2" HiC-Pro-3.1.0 wget https://files.pythonhosted.org/packages/e2/3f/c2747248931fc997d2fe303c4e18827cc0c94114fba3e2c709e530db7226/iced-0.5.13.tar.gz
pip install --prefix=/path/to/hic-pro/ numpy==1.19.5 scipy==1.9.3 pysam==0.17.0 bx-python==0.9.0 cython
tar xf iced-0.5.13.tar.gz
cd iced-0.5.13
cython iced/normalization/_normalization_.pyx
python setup.py install --prefix=/path/to/hic-pro/
tar xf hic-pro-3.1.0.tar.gz
HiC-Pro-3.1.0
# 载入相关依赖软件,需要安装这3个R包,ggplot2 (>2.2.1) RColorBrewer grid
module load arm/r/4.4.1 arm/bowtie2/2.5.4 arm/samtools/1.21
# 编辑 config-install.txt,PREFIX = /path/to/hic-pro/
make configure
make CONFIG_SYS=config-install.txt
hisat2¶
项目地址 https://github.com/DaehwanKimLab/hisat2
下载源码及依赖库
$ git clone https://github.com/DaehwanKimLab/hisat2.git
cd hisat2
$ wget https://raw.githubusercontent.com/lh3/ksw2/refs/heads/master/ksw2.h
$ wget https://raw.githubusercontent.com/DLTcollab/sse2neon/refs/heads/master/sse2neon.h
alphabet.cpp 文件的 404 行,将 -1 , 更改为 char(-1) , 更改后为 char mask2iupac[16] = {
char(-1),
'A', // 0001
'C', // 0010
'M', // 0011
'G', // 0100
'R', // 0101
'S', // 0110
'V', // 0111
'T', // 1000
'W', // 1001
'Y', // 1010
'H', // 1011
'K', // 1100
'D', // 1101
'B', // 1110
'N', // 1111
};
sse_util.haligner_sw.h 文件中的 #include <emmintrin.h> 替换为 #include "sse2neon.h"Makefile 文件中的 EXTRA_FLAGS += -DPOPCNT_CAPABILITY 注释掉
Makefile 166-175 行的如下内容
BITS_FLAG =
ifeq (32,$(BITS))
BITS_FLAG = -m32
endif
ifeq (64,$(BITS))
BITS_FLAG = -m64
endif
SSE_FLAG=-msse2
BITS_FLAG =
BITS=64
ifeq (32,$(BITS))
BITS_FLAG = -m32
endif
ifeq (64,$(BITS))
ifeq (0, $(AARCH64))
BITS_FLAG = -m64
endif
endif
SSE_FLAG =
ifeq (0, $(AARCH64))
SSE_FLAG=-msse2
BITS_FLAG = -m64
endif
#SSE_FLAG=-msse2
make -j12hifiasm¶
项目地址 https://github.com/chhylp123/hifiasm
下载二进制文件
$ wget https://anaconda.org/bioconda/hifiasm/0.19.9/download/linux-aarch64/hifiasm-0.19.9-hf1d9491_0.tar.bz2手动编译
下载源码及依赖库
$ git https://github.com/chhylp123/hifiasm.git
$ cd hifiasm
$ wget https://raw.githubusercontent.com/DLTcollab/sse2neon/refs/heads/master/sse2neon.h
Levenshtein_distance.h 中的 以下头文件都注释,添加 #include "sse2neon.h"#include "emmintrin.h"
#include "nmmintrin.h"
#include "smmintrin.h"
#include <immintrin.h>
//#include "emmintrin.h"
//#include "nmmintrin.h"
//#include "smmintrin.h"
//#include <immintrin.h>
#include "sse2neon.h"
Makefile 中的 #CXXFLAGS= -g -O3 -msse4.2 -mpopcnt -fomit-frame-pointer -Wall
替换为
CXXFLAGS= -g -O3 -fomit-frame-pointer -Wall
最后 make -j12
IBSpy¶
项目地址 https://github.com/Uauy-Lab/IBSpy
module load arm/python/3.11.10
pip install --prefix=/path/to/ibspy/ numpy pandas cython biopython pyfaidx pandas psutil matplotlib pyranges multiprocess pysam scikit-learn
wget https://github.com/Uauy-Lab/IBSpy/archive/refs/tags/0.4.6.tar.gz
tar 0.4.6.tar.gz
cd IBSpy-0.4.6
pip install --prefix=/path/to/ibspy/
# /path/to/ibspy/lib/python3.11/site-packages/IBSpy/window_affinity_propagation.py 中 `from numpy import NaN, ndarray` 改为 `from numpy import nan, ndarray`
# KMC api 安装
cd ..
wget https://github.com/refresh-bio/KMC/archive/refs/tags/v3.1.1.tar.gz
tar xf v3.1.1.tar.gz
cd KMC-3.1.1
# 将 makefile 中的 -I $(PY_KMC_API_DIR)/libs/pybind11/include 替换为 -I /share/software/app/arm/python/3.11.10/lib/python3.11/site-packages/pybind11/include/
make py_kmc_api
cp bin/*so /path/to/ibspy/lib/python3.11/site-packages/
# 测试
IBSpy -h
sh tests/integration_python.sh
k8¶
项目地址 https://github.com/attractivechaos/k8
直接使用 bioconda 中编译好的版本
$ wget https://anaconda.org/bioconda/k8/1.2/download/linux-aarch64/k8-1.2-h7f4e536_0.tar.bz2
$ tar xf k8-1.2-h7f4e536_0.tar.bz2
$ module load arm/gcc/12.2.0
$ ./bin/k8
Usage: k8 [options] <script.js> [arguments]
Options:
-e STR execute STR
-E STR execute STR and print results
-m INT v8 max size of the old space (in Mbytes) [16384]
-v print version number
--help show v8 command-line options
LACHESIS¶
项目地址 https://github.com/shendurelab/LACHESIS
# 注意 samtools 的版本不高于 0.1.19,samtools的include目录结构为 include/bam/xxxx.h
# boost 版本不高于 1.70.0
$ module load arm/samtools/0.1.19 arm/boost/1.60.0
$ tar xf shendurelab-LACHESIS-2e27abb.tar.gz
$ cd shendurelab-LACHESIS-2e27abb
$ ./configure --with-samtools=/path/to/samtools/0.1.19/ --prefix=/path/to/lachesis/ --with-boost=/path/to/boost/1.60.0
$ make -j 20
$ make install
lammps¶
$ module load arm/openmpi/5.0.5
$ wget https://download.lammps.org/tars/lammps.tar.gz
$ #tar xf lammps.tar.gz
$ cd lammps-29Aug2024
$ cd src
$ mkdir build
# 添加所需的包
$ make yes-manybody yes-meam yes-extra-fix yes-mc
$ make -j80 g++_openmpi
lapack¶
编译静态库
将 librefblas.a、libcblas.a、liblapack.a、liblapacke.a 都编译出来。
$ wget http://www.netlib.org/lapack/lapack.tgz
$ tar lapack
$ cd lapack-3.10.1
$ cp make.inc.example make.inc
$ make blaslib
$ make cblaslib
$ make lapacklib
$ make lapackelib
1、 静态库路径
检查下 lapack-3.10.1 下是否有 librefblas.a、libcblas.a、liblapack.a、liblapacke.a 这几个文件,没有的话重新编译一次。
- 头文件路径
cblas头文件路径: lapack-3.10.1/CBLAS/include
lapacke头文件路径: lapack-3.10.0/LAPACKE/include
cblas 是 blas 的 c 接口,lapacke 是 lapack 的 c 接口,由于 blas、lapack 是 fortran 代码所以这两个没有头文件,只有 .a 文件。
参考
https://www.cnblogs.com/babyclass/p/16358589.html
编译动态库
动态库编译需要使用 cmake 编译
$ wget http://www.netlib.org/lapack/lapack.tgz
$ tar lapack
$ cd lapack-3.10.1
$ mkdir build && cd build
$ cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=ON -DCBLAS=ON -DLAPACKE=ON
$ make -j
$ ls -1 lib/
libblas.so -> libblas.so.3
libblas.so.3 -> libblas.so.3.10.0
libblas.so.3.10.0
libcblas.so -> libcblas.so.3
libcblas.so.3 -> libcblas.so.3.10.0
libcblas.so.3.10.0
liblapacke.so -> liblapacke.so.3
liblapacke.so.3 -> liblapacke.so.3.10.0
liblapacke.so.3.10.0
liblapack.so -> liblapack.so.3
liblapack.so.3 -> liblapack.so.3.10.0
liblapack.so.3.10.0
option(BUILD_SHARED_LIBS "Build shared libraries" OFF)
option(BUILD_INDEX64 "Build Index-64 API libraries" OFF)
option(BUILD_TESTING "Build tests" ${_is_coverage_build})
option(BUILD_DEPRECATED "Build deprecated routines" OFF)
option(BUILD_SINGLE "Build single precision real" ON)
option(BUILD_DOUBLE "Build double precision real" ON)
option(BUILD_COMPLEX "Build single precision complex" ON)
option(BUILD_COMPLEX16 "Build double precision complex" ON)
option(USE_OPTIMIZED_BLAS "Whether or not to use an optimized BLAS library instead of included netlib BLAS" OFF)
option(CBLAS "Build CBLAS" OFF)
option(USE_XBLAS "Build extended precision (needs XBLAS)" OFF)
option(USE_OPTIMIZED_LAPACK "Whether or not to use an optimized LAPACK library instead of included netlib LAPACK" OFF)
option(LAPACKE "Build LAPACKE" OFF)
option(LAPACKE_WITH_TMG "Build LAPACKE with tmglib routines" OFF)
option(BLAS++ "Build BLAS++" OFF)
option(LAPACK++ "Build LAPACK++" OFF)
option(BUILD_HTML_DOCUMENTATION "Create and install the HTML based API
option(BUILD_MAN_DOCUMENTATION "Create and install the MAN based documentation (requires Doxygen) - command: make man" OFF)
libdb¶
https://github.com/berkeleydb/libdb
$ git clone https://github.com/berkeleydb/libdb.git
$ cd libdb/build_unix
$ ../dist/configure --prefix=/path/to/libdb/ --build=arm-linux-gnueabi
$ make -j20
$ make install
Liftoff¶
项目地址 https://github.com/agshumate/Liftoff
git clone https://github.com/agshumate/Liftoff
cd Liftoff
pip install --prefix=/path/to/liftoff/ numpy pysam
PYTHONPATH=//path/to/liftoff/lib/python3.9/site-packages/://path/to/liftoff/lib64/python3.9/site-packages/ python setup.py install --prefix=/path/to/liftoff/
llvm¶
项目地址 https://github.com/llvm/llvm-project
git clone https://github.com/llvm/llvm-project.git
cd llvm-project
cmake -S llvm -B build -DCMAKE_INSTALL_PREFIX=/path/to/llvm/ -DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS="clang;lld"
cmake --build build -j 80
mafft¶
参考 https://mafft.cbrc.jp/alignment/software/installation_without_root.html
mash¶
项目地址 github.com/marbl/Mash/
源码编译
$ module load capnproto/1.1.0 gsl/2.8 gcc/10.3.0
$ tar xf Mash-2.3.tar.gz
$ cd Mash-2.3
$ sed -i '8,10s/^/#/' Makefile.in
$ autoreconf -i
$ ./configure --prefix=/path/to/mash/ --with-capnp=/path/to/capnproto/ --with-gsl=/path/to/gsl/ --enable-static-gsl
$ make -j
$ make install
$ /path/to/mash/bin/mash -h
Mash version 2.3
Type 'mash --license' for license and copyright information.
Usage:
mash <command> [options] [arguments ...]
Commands:
bounds Print a table of Mash error bounds.
dist Estimate the distance of query sequences to references.
info Display information about sketch files.
paste Create a single sketch file from multiple sketch files.
screen Determine whether query sequences are within a larger mixture of
sequences.
sketch Create sketches (reduced representations for fast operations).
taxscreen Create Kraken-style taxonomic report based on mash screen.
triangle Estimate a lower-triangular distance matrix.
使用 bioconda 中编译好的版本。
先编译 cblas 动态库
tar xf lapack-3.10.0.tgz
cd lapack-3.10.0
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/path/to/mash/ -DCMAKE_BUILD_TYPE=RELEASE -DCBLAS=ON
make -j
make install
$ wget https://anaconda.org/bioconda/mash/2.3/download/linux-aarch64/mash-2.3-heca2785_9.tar.bz2
$ tar xf mash-2.3-heca2785_9.tar.bz2
$ module load arm/gsl/2.7 arm/gcc/14.2.0
$ cp -r bin/ /path/to/mash/
$ export LD_LIBRARY_PATH=/path/to/mash/lib64/:$LD_LIBRARY_PATH
$ /path/to/mash/bin/mash -h
Mash version 2.3
Type 'mash --license' for license and copyright information.
Usage:
mash <command> [options] [arguments ...]
Commands:
bounds Print a table of Mash error bounds.
dist Estimate the distance of query sequences to references.
info Display information about sketch files.
paste Create a single sketch file from multiple sketch files.
screen Determine whether query sequences are within a larger mixture of
sequences.
sketch Create sketches (reduced representations for fast operations).
taxscreen Create Kraken-style taxonomic report based on mash screen.
triangle Estimate a lower-triangular distance matrix.
megacc¶
项目地址 https://github.com/KumarMEGALab/MEGA-source-code https://www.megasoftware.net/
mega 使用 pascal 语言编写,Lazarus 编译。这里只编译命令行工具 megacc 。
cd ~/megacc
# 准备编译环境
# wget https://downloads.freepascal.org/fpc/beta/3.2.4-rc1/aarch64-linux/fpc-3.2.4-rc1.aarch64-linux.tar
wget https://sourceforge.net/projects/lazarus-ccr/files/FPSpreadsheet/fpspreadsheet-1.16.zip
wget https://download.lazarus-ide.org/Lazarus%20Linux%20arm64%20DEB/Lazarus%204.2/lazarus-project_4.2.0-0_arm64.deb
wget https://download.lazarus-ide.org/Lazarus%20Linux%20arm64%20DEB/Lazarus%204.2/fpc-laz_3.2.3-240813_arm64.deb
$ mkdir lazarus-project
$ mv lazarus-project_4.2.0-0_arm64.deb lazarus-project
$ ar -vx lazarus-project_4.2.0-0_arm64.deb
$ tar xf data.tar.xz
$ mkdir fpc-laz
$ mv fpc-laz_3.2.3-240813_arm64.deb fpc-laz
$ cd fpc-laz
$ ar -vx fpc-laz_3.2.3-240813_arm64.deb
$ tar xf data.tar.xz
$ cd usr/bin
$ mkdir aarch64-linux
$ mv * aarch64-linux
$ cd aarch64-linux
$ ln -s ../../lib/fpc/3.2.3/ppca64 ppca64
$ cd ~/megacc/lazarus-project
$ mv ../fpc-laz/usr usr/share/lazarus/4.2.0/fpc
export PATH=$HOME/megacc/lazarus-project/usr/bin/:$HOME/megacc/lazarus-project/usr/share/lazarus/4.2.0/fpc/bin/aarch64-linux:$PATH
$ which lazbuild fpc fpcres
~/megacc/lazarus-project/usr/bin/lazbuild
~/megacc/lazarus-project/usr/share/lazarus/4.2.0/fpc/bin/aarch64-linux/fpc
~/megacc/lazarus-project/usr/share/lazarus/4.2.0/fpc/bin/aarch64-linux/fpcres
$ mkdir ~/megacc/fpspreadsheet
$ cd ~/megacc/fpspreadsheet
$ cp ../fpspreadsheet-1.16.zip .
$ unzip fpspreadsheet-1.16.zip
# 编译生成 laz_fpspreadsheet.pas
$ lazbuild --lazarusdir="$HOME/megacc/lazarus-project/usr/share/lazarus/4.2.0" --pcp="$HOME/.lazarus" laz_fpspreadsheet.lpk
# 下载mega源码并编译megacc
$ cd ~/megacc
$ git clone https://github.com/KumarMEGALab/MEGA-source-code/
$ cd MEGA-source-code/MEGA12-source/MEGA-CC
$ cp resources_windows.lrs resources_unix.lrs
将 megaccxplatform.lpi 中的以下三行删除
<ExecuteAfter>
<Command Value="test_cc_dependencies.sh"/>
</ExecuteAfter>
$ lazbuild --lazarusdir="$HOME/megacc/lazarus-project/usr/share/lazarus/4.2.0" megaccxplatform.lpi --build-mode=release-Linux --cpu=aarch64 > megacc-build.log 2>&1
# 确认编译成功
$ ../megacc -v
Molecular Evolutionary Genetics Analysis
Molecular Evolutionary Genetics Analysis - Computational Core
Version: 12.0.4
Build: 12241219-arm64
Authors: Koichiro Tamura, Glen Stecher, Sudhir Kumar
Copyright 2011-2025
Web: http://www.megasoftware.net
megahit¶
项目地址 https://github.com/voutcn/megahit
下载二进制文件
https://anaconda.org/bioconda/megahit/1.2.9/download/linux-aarch64/megahit-1.2.9-hf1d9491_5.tar.bz2手动编译
$ git clone https://github.com/voutcn/megahit.git $ cd megahit $ wget https://raw.githubusercontent.com/DLTcollab/sse2neon/refs/heads/master/sse2neon.h $ cp sse2neon.h src
将 src/parallel_hashmap/phmap_config.h 中 618 行的 #include <emmintrin.h> 和 623 行的 #include <tmmintrin.h> 分别替换为 #include "../sse2neon.h",如下所示。
#if PHMAP_HAVE_SSE2
//#include <emmintrin.h>
#include "../sse2neon.h"
#endif
#if PHMAP_HAVE_SSSE3
//#include <tmmintrin.h>
#include "../sse2neon.h"
#endif
src/xxhash/xxh3.h 中 618 行的 #include <emmintrin.h> 和 623 行的 #include <tmmintrin.h> 分别替换为 #include "../sse2neon.h",如下所示。 #if defined(__GNUC__)
# if defined(__AVX2__)
//# include <immintrin.h>
#include "../sse2neon.h"
# elif defined(__SSE2__)
//# include <emmintrin.h>
#include "../sse2neon.h"
src/main.cpp 中 包含 HasPopcnt() 和 HasBmi2() 的行注释掉,如下所示。 } else if (strcmp(argv[1], "checkcpu") == 0) {
// pprintf("{}\n", HasPopcnt() && HasBmi2());
} else if (strcmp(argv[1], "checkpopcnt") == 0) {
// pprintf("{}\n", HasPopcnt());
} else if (strcmp(argv[1], "checkbmi2") == 0) {
// pprintf("{}\n", HasBmi2());
} else if (strcmp(argv[1], "dumpversion") == 0) {
将 src/kmlib/kmrns.h 中 11 行的 #include <x86intrin.h> 注释掉,如下所示。
// #include <x86intrin.h>
CMakeLists.txt 中 76-77 两行注释掉,即禁用 -mbmi2 -DUSE_BMI2 和 -mpopcnt 相关的编译选项,如下所示。 set_target_properties(megahit_core PROPERTIES COMPILE_FLAGS "-mbmi2 -DUSE_BMI2 -mpopcnt")
set_target_properties(megahit_core_popcnt PROPERTIES COMPILE_FLAGS "-mpopcnt")
编译
$ mkdir build
$ cd build
$ cmake ../ .. -DCMAKE_BUILD_TYPE=Release
$ make -j12
$ make install
metabat¶
下载二进制文件
$ module load arm/libdeflate/1.8 arm/boost/1.85.0 arm/gcc/12.2.0
$ wget https://anaconda.org/bioconda/metabat2/2.17/download/linux-aarch64/metabat2-2.17-hb490ba1_0.tar.bz2
$ tar xf metabat2-2.17-hb490ba1_0.tar.bz2
$ ./bin/metabat1
$ git clone https://bitbucket.org/berkeleylab/metabat.git
$ cd metabat
$ mkdir build && cd build
$ cmake -DCMAKE_INSTALL_PREFIX=/path/to/metabat ..
# make 时会从 github 下载依赖,需保持 github 网络通畅
$ make -j20
$ make install
MCScanX¶
项目地址 https://github.com/wyp1125/MCScanX
$ tar xf MCScanX-1.0.0.tar.gz
$ cd MCScanX-1.0.0/
$ make
# 测试
$ ./MCScanX -h
# 使用下游分析脚本
$ cd downstream_analyses/
$ java bar_plotter -h
Usage: java bar_plotter -g gff_file -s collinearity_file -c control_file -o output_PNG_file
minigraph¶
项目地址 https://github.com/lh3/minigraph
$ git clone https://github.com/lh3/minigraph
$ cd minigraph
# 去掉 -msse4 编译选项
$ sed -i 's/-msse4//g' Makefile
$ make
minimap2¶
项目地址 https://github.com/lh3/minimap2
$ git clone https://github.com/lh3/minimap2
$ cd minimap2
$ make arm_neon=1 aarch64=1
miniprot¶
项目地址 https://github.com/lh3/miniprot
$ git clone https://github.com/lh3/miniprot
$ cd miniprot && make
msmc2¶
项目地址 https://github.com/stschiff/msmc2
使用 ldmd2 代替 dmd
$ module load arm/ldc2/1.41.0
$ cd /path/to/ldc2/1.41.0/bin/
$ ln -s ldmd2 dmd
$ tar xf msmc2-2.1.4.tar.gz
$ cd msmc2-2.1.4
# 将 Makefile 中的 GSLDIR=/usr/local/lib 替换为 GSLDIR=/path/to/gsl/2.4/lib/
$ make -j
$ build/release/msmc2
muscle¶
项目地址:https://www.drive5.com/muscle/
github上编译好的aarch64版本,运行会报错 myutils.cpp(106) assert failed: sizeof(void *) == 4,查看源码,其原因为代码未能正确识别 64 位CPU,因此需要下载源码重新编译。
muscle-5.3.tar.gz
tar xf muscle-5.3.tar.gz
cd muscle-5.3/src/
myutils.h 第 13 行代码 13 #if defined(__x86_64__) || defined(_M_X64) || defined(__arm64__)修改为
13 #if defined(__x86_64__) || defined(_M_X64) || defined(__arm64__) || defined(__aarch64__)
然后 sh build_linux.bash 编译,编译后生成可执行文件 ../bin/muscle。
也可以直接在 bioconda 中下载编译的 aarch64 版本
https://anaconda.org/bioconda/muscle/files
$ wget https://anaconda.org/bioconda/muscle/5.3/download/linux-aarch64/muscle-5.3-h78569d1_0.tar.bz2
$ tar xf muscle-5.3-h78569d1_0.tar.bz2
$ ls bin/muscle
nanom6A¶
项目地址:https://github.com/gaoyubang/nanom6A
打开链接 https://drive.google.com/drive/folders/1Dodt6uJC7lBihSNgT3Mexzpl_uqBagu0
下载 nanom6A_2022_12_22.tar.gz 并解压
安装 python 依赖库
# 注意固定 numpy 和 xgboost 的版本,否则可能会安装或运行出错
$ pip install --prefix=/path/to/nanom6a/ joblib numpy==1.21 pysam scikit-learn scipy tqdm xgboost==0.80 h5py statsmodels
安装 jvarkit-sam2tsv
$ wget https://anaconda.org/HCC/jvarkit-sam2tsv/1.0/download/linux-64/jvarkit-sam2tsv-1.0-0.tar.bz2
tar xf jvarkit-sam2tsv-1.0-0.tar.bz2
mkdir /path/to/nanom6a/jar/
cp dist/sam2tsv.jar /path/to/nanom6a/jar/
cp lib/com/beust/jcommander/1.64/jcommander-1.64.jar /path/to/nanom6a/jar/
cp lib/com/github/samtools/htsjdk/2.9.1/htsjdk-2.9.1.jar /path/to/nanom6a/jar/
# 创建sam2tsv脚本
$ cat /path/to/nanom6a/bin/sam2tsv
#!/bin/bash
java -Djvarkit.log.name=sam2tsv -Dfile.encoding=UTF8 -Xmx500m -cp "/path/to/nanom6a/jar/htsjdk-2.9.1.jar:/path/to/nanom6a/jar/jcommander-1.64.jar:/path/to/nanom6a/jar/sam2tsv.jar" com.github.lindenb.jvarkit.tools.sam2tsv.Sam2Tsv $*
测试
cd nanom6A_2022_12_22
$ export PYTHONPATH=/path/to/nanom6a/lib/python3.9/site-packages/:/path/to/nanom6a/lib64/python3.9/site-packages/
$ export PATH="/path/to/nanom6a/bin/:$PATH"
$ module load arm/samtools/1.21 arm/minimap2/2.28 arm/bedtools/2.31.1
$ sh run_source_code.sh
如果 run_source_code.sh 运行正常没有报错,则表示相关依赖安装完成。
ncurses¶
$ wget https://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.5.tar.gz
$ tar xf ncurses-6.5.tar.gz
$ cd ncurses-6.5
$ ./configure --prefix=/path/to/ncurses/ \
--with-shared \
--enable-overwrite \
--without-ada \
--enable-symlinks \
--with-versioned-syms \
--enable-pc-files \
--enable-ext-colors \
--enable-widec \
$ make
$ make install
$ mkdir /path/to/ncurses/lib/pkconfig
$ cp misc/*pc /path/to/ncurses/lib/pkconfig
# 作用说明
--with-shared 生成动态链接库,允许程序运行时动态加载
--enable-overwrite 允许安装时覆盖现有文件,避免冲突
--without-ada 禁用 Ada 语言支持,减少编译时间和依赖
--enable-symlinks 创建符号链接,提供版本兼容性
--with-versioned-syms 使用版本化符号,支持多版本共存
--enable-pc-files 生成 pkg-config 文件,方便其他软件查找依赖
--enable-widec 重要:启用宽字符支持,支持 Unicode 和 UTF-8
--enable-ext-colors 启用扩展颜色支持,提供更多颜色选项
openblas¶
项目地址 https://github.com/OpenMathLib/OpenBLAS
$ wget https://github.com/OpenMathLib/OpenBLAS/releases/download/v0.3.28/OpenBLAS-0.3.28.tar.gz
$ tar xf OpenBLAS-0.3.28.tar.gz
$ cd OpenBLAS
$ make -j20
$ make install PREFIX=/path/to/openblas/
export OPENBLAS_NUM_THREADS=4
export GOTO_NUM_THREADS=4
export OMP_NUM_THREADS=4
odgi¶
项目地址 https://github.com/pangenome/odgi
$ git clone --recursive https://github.com/pangenome/odgi.git
$ cd odgi
# 去掉 -msse4.2 编译选项
$ sed -i 's/-msse4.2//g' ./CMakeLists.txt
$ sed -i 's/-msse4.2//g' ./deps/sdsl-lite/CMakeLists.txt
$ sed -i 's/-msse4.2//g' ./deps/mmmulti/deps/sdsl-lite/CMakeLists.txt
$ sed -i 's/arch=x86-64/arch=armv8-a/g' src/main.cpp
$ module load arm/jemalloc/5.2.1
# 使用自己编译好的 gcc,否则会出现报错 /usr/bin/ld: cannot find -latomic
$ module load arm/gcc/10.3.0
$ cmake -H. -Bbuild
$ cmake --build build -- -j 20
$ bin/odgi -h
ORCA¶
项目地址 https://orcaforum.kofo.mpg.de/app.php/dlext/?cat=25
ORCA 官方只有编译好的二进制版本,其依赖的 glibc 和 gcc 版本较高,这里手动处理这 2 个依赖。
$ cd /path/to/orca/
$ tar xf orca_6_0_1_linux_arm64_shared_openmpi418.tar.xz
$ mv orca_6_0_1_linux_arm64_shared_openmpi418 orca
$ git clone https://github.com/matrix1001/glibc-all-in-one
$ cd glibc-all-in-one
# 下载适合版本的 libc6,此处的 glibc 版本为 2.41
$ wget https://ftp.debian.org/debian/pool/main/g/glibc/libc6_2.41-6_arm64.deb
$ mkdir glibc
# 解压 deb
$ ./extract libc6_2.41-6_arm64.deb glibc
$ mv glibc ../orca
# 使用 patchelf 更改可执行文件的 interpreter
module load arm/patchelf/0.18.0
$ ls -1 /path/to/orca/orca/orca* |xargs -i patchelf --set-interpreter /path/to/orca/orca/glibc/ld-linux-aarch64.so.1 --add-rpath /path/to/orca/orca/glibc/ {}
$ ls -1 /path/to/orca/orca/autoci_* |xargs -i patchelf --set-interpreter /path/to/orca/orca/glibc/ld-linux-aarch64.so.1 --add-rpath /path/to/orca/orca/glibc/ {}
# 更改 orca 动态库的 rpath
$ patchelf --add-rpath /path/to/orca/orca/glibc/ /path/to/orca/orca/lib/liborca_tools_6_0_1.so.6
$ patchelf --add-rpath /path/to/orca/orca/glibc/ /path/to/orca/orca/lib/liborca_tools_6_0_1_mpi.so.6
# 加载 gcc 和 openmpi 依赖
$ module load arm/gcc/14.2.0 arm/openmpi/5.0.5
# 测试
$ orca
This program requires the name of a parameterfile as argument
For example ORCA TEST.INP
# 可用
$ #singularity build --sandbox orca_openmpi2 docker://dockerpull.org/fenicsproject/test-env:current-openmpi
# 不可用
$ #singularity build --sandbox orca_openmpi3 docker://dockerpull.org/mfisherman/openmpi:4.1.6
OrthoFinder¶
项目地址 https://github.com/davidemms/OrthoFinder
$ wget https://github.com/davidemms/OrthoFinder/archive/refs/tags/3.0.1b1.tar.gz
$ tar xf 3.0.1b1.tar.gz
$ cd OrthoFinder-3.0.1b1
$ pip install numpy scipy --prefix=/path/to/orthofinder/
$ pip install . --prefix=/path/dir/orthofinder/
# 载入依赖
$ module load arm/diamond/2.1.10 arm/mcl/22-282 arm/fastme/2.1.6.4 arm/mafft/7.525 arm/fasttree/2.1.11
# 测试
$ orthofinder -f ExampleData/
nextdenovo¶
$ module load arm/curl/8.10.1 arm/openssl/3.3.2
$ git clone git@github.com:Nextomics/NextDenovo.git
$ cd NextDenovo && make arm_neon=1 aarch64=1
PanDepth¶
项目地址https://github.com/HuiyangYu/PanDepth
软件编译时使用了在x86平台上预编译好的静态库,使用自己编译的静态库时报错较多,故这里使用依赖的动态库编译。
$ module load arm/libdeflate/1.8 arm/htslib/1.21
$ git clone https://github.com/HuiyangYu/PanDepth.git
$ cd PanDepth
$ mkdir include2
$ cp include/{comm.h,DataClass.h,gzstream.*} include2/
$ g++ --std=c++11 -g -O3 src/PanDepth.cpp -lhts -ldeflate -lz -pthread -Iinclude2 -o bin/pandepth
$ cd bin
$ ./pandepth -h
htslib 使用默认编译参数出来的静态库 libhts.a ,PanDepth 在使用时出现很多类似 undefined reference to 'BZ2_bzBuffToBuffCompress' 的报错。这里 htslib 编译时需要添加编译参数 --disable-lzma --disable-bz2。
$ git clone https://github.com/HuiyangYu/PanDepth.git
$ cd PanDepth
$ rm -rf lib/*a
$ cp /path/to/zlib/lib/libz.a /path/to/libdeflate/lib/libdeflate.a /path/to/htslib/lib/libhts.a lib
$ make
# 编译出的是动态文件
$ ldd bin/pandepth
$ linux-vdso.so.1 (0x0000400038237000)
libstdc++.so.6 => /share/software/app/arm/gcc/10.3.0//lib64/libstdc++.so.6 (0x0000400038254000)
libm.so.6 => /usr/lib64/libm.so.6 (0x000040003843a000)
libgcc_s.so.1 => /share/software/app/arm/gcc/10.3.0//lib64/libgcc_s.so.1 (0x00004000384db000)
libc.so.6 => /usr/lib64/libc.so.6 (0x000040003850c000)
/lib/ld-linux-aarch64.so.1 (0x0000400038212000)
# 编译静态文件
# 在 Makefile 文件中给gcc 添加静态编译选项 -static
$ module load gcc/10.3.0
$ make
$ ldd bin/pandepth
not a dynamic executable
PanGenie¶
编译安装 jellyfish,设置环境变量 PKG_CONFIG_PATH。
$ export PKG_CONFIG_PATH=/path/to/jellyfish/lib/pkgconfig
下载 cereal,设置环境变量 CPATH。
$ git clone https://github.com/USCiLab/cereal
$ export CPATH=/path/to/cereal/include/
$ git clone https://github.com/eblerjana/pangenie.git
$ cd pangenie
tests/catch.hpp 中 所有的 SIGSTKSZ 更改为 32768 (6631行、6599行)。 编译安装
$ mkdir build
$ cd build
$ cmake ..
$ make -j12
$ ls src/
libPanGenieLib.so
PanGenie-index
PanGenie
paragraph¶
项目地址 https://github.com/Illumina/paragraph/
编译boost,因为需要用特殊的编译选项,故不使用已安装好的。
cd ~
wget http://downloads.sourceforge.net/project/boost/boost/1.65.0/boost_1_65_0.tar.bz2
tar xf boost_1_65_0.tar.bz2
cd boost_1_65_0
./bootstrap.sh
./b2 --prefix=/path/to/boost/ link=static install
tar xf paragraph-2.4a.tar.gz
cd paragraph-2.4a
# 注释x86编译选项 -msse4.1
sed -i.bak 's/set_source_files_properties/#set_source_files_properties/g' ./external/CMakeLists.txt
# 将 x86的 sse2 替换为 arm 的相关指令
cp ~/package/sse2neon.h ./external/gssw/
cp ~/package/sse2neon.h ./external/klib/
sed -i.bak 's/<emmintrin.h>/"sse2neon.h"/g' ./external/gssw/gssw.c
sed -i.bak 's/<smmintrin.h>/"sse2neon.h"/g' ./external/gssw/gssw.h
sed -i.bak 's/<emmintrin.h>/"sse2neon.h"/g' ./external/klib/ksw.c
# 编译 warning 报错
sed -i.bak 's/-Werror/ /g' src/cmake/cxx.cmake
mkdir build && cd build
BOOST_ROOT=/path/to/boost/ ../configure --prefix=//path/to/paragrpah
paragraph-2.4a/build) 在 external/graphtools-src/src/graphcore/GraphCoordinates.cpp 中 31 行添加 #include <limits>
将 external/graphtools-src/src/graphIO/GraphJson.cpp 中 71 行的for (const string& label : *labels) 改为 for (const auto& label : *labels)
将 external/graphtools-src/src/graphIO/../../external/include/nlohmann/json.hpp 中 2997 行的 if ('\x00' <= c and c <= '\x1F') 改为 if (static_cast<unsigned char>(c) <= 0x1F)
最后 make,以下报错不用管。
[ 97%] Linking CXX executable ../../../bin/test_blackbox
/usr/bin/ld: CMakeFiles/test_blackbox.dir/test_paragraph.cpp.o:/share/home/software/package/paragrpah/tmp/paragraph-2.4a/src/c++/test-blackbox/test_paragraph.cpp:47: multiple definition of `compare_values'; CMakeFiles/test_blackbox.dir/test_multithreading.cpp.o:/share/home/software/package/paragrpah/tmp/paragraph-2.4a/src/c++/test-blackbox/test_multithreading.cpp:39: first defined here
collect2: error: ld returned 1 exit status
make[2]: *** [src/c++/test-blackbox/CMakeFiles/test_blackbox.dir/build.make:174: bin/test_blackbox] Error 1
make[1]: *** [CMakeFiles/Makefile2:784: src/c++/test-blackbox/CMakeFiles/test_blackbox.dir/all] Error 2
make: *** [Makefile:136: all] Error 2
$ ls -1 bin/
addVariants.py
compare-alignments.py
findgrm.py
graph-to-fasta
grmpy
grmpy-vcf-merge.py
idxdepth
__init__.py
kmerstats
msa2vcf.py
multigrmpy.py
multiparagraph.py
pam
paragraph
paragraph2dot.py
test_grm
vcf2paragraph.py
$ ./bin/paragraph -h
安装python依赖
pip install --prefix=/path/to/paragrpah/ -r requirements.txt
perl¶
需要先编译安装 berkeley-db,否则使用报错 DB_File/DB_File.so: undefined symbol: db_create at ... 。
$ cpanm --reinstall --configure-args='INC="-I/path/to/berkeley-db/5.3.21/include" LIBS="-L/path//berkeley-db/5.3.21/lib -ldb"' -l /path/to/perl/5.34.0/ DB_File
petsc¶
项目地址 https://gitlab.com/petsc/petsc
$ wget https://web.cels.anl.gov/projects/petsc/download/release-snapshots/petsc-3.22.2.tar.gz
$ tar xf petsc-3.22.2.tar.gz
$ cd petsc-3.22.2
$ module load arm/openmpi/5.0.5 arm/openblas/0.3.28
$ ./configure --prefix=//path/to/petsc/ --with-hypre=1 --download-hypre=yes
$ make all check
$ make install
plink¶
项目地址 https://github.com/chrchang/plink-ng https://www.cog-genomics.org/plink/2.0/
- 2.0 版本 将 Makefile 文件的
tar xf plink-ng-2.0.0-a.6.5.tar.gz cd plink-ng-2.0.0-a.6.5/2.0
#BLASFLAGS64 ?= -llapack
改为
BLASFLAGS64 ?= -O2 -L/share/software/app/arm/lapack/3.12.0/ -I/share/software/app/arm/lapack/3.12.0/include/ -llapack -lblas -lgfortran
然后编译 make -j20,生成目标文件 bin/plink2。
- 1.9 版本
tar xf plink-ng-2.0.0-a.6.5.tar.gz
cd plink-ng-2.0.0-a.6.5/1.9
module load arm/zlib/1.3
CFLAGS ?= -Wall -O2 -g -I../2.0/simde
改为
CFLAGS ?= -Wall -O2 -g -I../2.0/simde -D DYNAMIC_ZLIB
将
BLASFLAGS ?= -L/usr/lib64/atlas -llapack -lblas -lcblas -latlas
改为
BLASFLAGS ?= -L/share/software/app/arm/lapack/3.12.0/lib -I/share/software/app/arm/lapack/3.12.0/include/ -llapack -lblas -lcblas -lgfortran
将
#ZLIB ?= -L. ../zlib-1.3.1/libz.so.1.3.1
改为
ZLIB ?= -L. /share/software/app/arm/zlib/1.3/lib/libz.a
然后编译 make -j20,生成目标文件 plink。
plotsr¶
项目地址 https://github.com/schneebergerlab/plotsr
$ git clone https://github.com/schneebergerlab/plotsr.git
$ pip install --prefix=/path/to/plotsr/ numpy==1.21.2 pandas==1.2.4 matplotlib setuptools
$ PYTHONPATH=/path/to/plotsr/lib/python3.9/site-packages/:/path/to/plotsr/lib64/python3.9/site-packages/ python setup.py install --prefix=/path/to/plotsr/
$ cd dist/
$ unzip plotsr-0.0.0-py3.9.egg
$ cp -r plotsr /path/to/plotsr/lib64/python3.9/
$ export PYTHONPATH=/path/to/plotsr/lib/python3.9/site-packages/:/path/to/plotsr/lib64/python3.9/site-packages/
$ export PATH="/path/to/plotsr/bin/:$PATH"
$ plotsr -h
plumed¶
项目地址 https://github.com/plumed/plumed2
# 使用hmpi编译
# 使用 FFTW_ROOT 设置使用 fftw3,否则默认可能使用fftw,导致后面编译gromacs使用fftw3时报错
$ module load arm/hyper-mpi/24.6.30_bisheng arm/jq/1.7.1
$ FFTW_ROOT=/path/to/fftw3/ ./configure --prefix=/path/to/plumed2 --enable-fftw --enable-zlib --enable-mpi CXX=`which mpicxx` CC=`which mpicc`
$ make -j96 && install
python¶
静态编译
安装最新版的zlib、bzip2、xz、readline、ncurse、libffi、sqlite、openssl到同一个目录,然后删掉动态库,只保留静态库,将所有 lib64下的静态库拷贝到lib下。
$ tar xf Python-3.9.19.tgz
$ cd Python-3.9.19
$ ./configure --enable-optimizations --prefix=/python/to/path/ --with-openssl=/libpath/to/lib/ CPPFLAGS="I/libpath/to/include" LDFLAGS="I/libpath/to/lib" LIBS="-Wl,-Bstatic -lncursesw -lpanelw -lz -lbz2 -lreadline -lffi -Wl,-Bdynamic"
$ make -j
....
# make 结束后查看是否有预期未编译的模块
Python build finished successfully!
The necessary bits to build these optional modules were not found:
_dbm _gdbm _tkinter
_uuid nis
To find the necessary bits, look in setup.py in detect_modules() for the module's name.
The following modules found by detect_modules() in setup.py, have been
built by the Makefile instead, as configured by the Setup files:
_abc atexit pwd
time
# 查看这些模块是否链接额外的动态库
$ ldd ./build/lib.linux-x86_64-3.9/{zlib.cpython-39-x86_64-linux-gnu.so,readline.cpython-39-x86_64-linux-gnu.so,_bz2.cpython-39-x86_64-linux-gnu.so,readline.cpython-39-x86_64-linux-gnu.so,_ctypes.cpython-39-x86_64-linux-gnu.so,_sqlite3.cpython-39-x86_64-linux-gnu.so,_curses.cpython-39-x86_64-linux-gnu.so}
./build/lib.linux-x86_64-3.9/zlib.cpython-39-x86_64-linux-gnu.so:
linux-vdso.so.1 (0x00007fff3a9fc000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00001486580e9000)
libc.so.6 => /lib64/libc.so.6 (0x0000148657d13000)
/lib64/ld-linux-x86-64.so.2 (0x0000148658524000)
./build/lib.linux-x86_64-3.9/readline.cpython-39-x86_64-linux-gnu.so:
linux-vdso.so.1 (0x00007ffd46f94000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x0000152f99393000)
libc.so.6 => /lib64/libc.so.6 (0x0000152f98fbd000)
/lib64/ld-linux-x86-64.so.2 (0x0000152f9982f000)
./build/lib.linux-x86_64-3.9/_bz2.cpython-39-x86_64-linux-gnu.so:
linux-vdso.so.1 (0x00007ffc9b4bf000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000015043136b000)
libc.so.6 => /lib64/libc.so.6 (0x0000150430f95000)
/lib64/ld-linux-x86-64.so.2 (0x00001504317a1000)
./build/lib.linux-x86_64-3.9/readline.cpython-39-x86_64-linux-gnu.so:
linux-vdso.so.1 (0x00007ffda3bb5000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000014700bde9000)
libc.so.6 => /lib64/libc.so.6 (0x000014700ba13000)
/lib64/ld-linux-x86-64.so.2 (0x000014700c285000)
./build/lib.linux-x86_64-3.9/_ctypes.cpython-39-x86_64-linux-gnu.so:
linux-vdso.so.1 (0x00007ffcdd2f3000)
libdl.so.2 => /lib64/libdl.so.2 (0x00001466222fc000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00001466220dc000)
libc.so.6 => /lib64/libc.so.6 (0x0000146621d06000)
/lib64/ld-linux-x86-64.so.2 (0x000014662272a000)
./build/lib.linux-x86_64-3.9/_sqlite3.cpython-39-x86_64-linux-gnu.so:
linux-vdso.so.1 (0x000014dfe9518000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x000014dfe8d76000)
libc.so.6 => /lib64/libc.so.6 (0x000014dfe89a0000)
/lib64/ld-linux-x86-64.so.2 (0x000014dfe92eb000)
./build/lib.linux-x86_64-3.9/_curses.cpython-39-x86_64-linux-gnu.so:
linux-vdso.so.1 (0x00007ffcaf4f1000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00001531e9136000)
libc.so.6 => /lib64/libc.so.6 (0x00001531e8d60000)
/lib64/ld-linux-x86-64.so.2 (0x00001531e95c6000)
# 测试使用
$ ./python -c "
import sys, zlib, bz2, readline
print('zlib 版本:', zlib.ZLIB_VERSION)
print('bz2 库版本:', bz2.__doc__)
print('readline 动态库路径:', readline.__file__)
"
# 安装
$ make install
$
R¶
项目地址 https://cran.r-project.org/
install=/path/to/r/
export LDFLAGS="-L${install}/lib"
export CFLAGS="-I${install}/include"
export LD_LIBRARY_PATH="${install}/lib/"
# 编译安装 readline
$ wget https://ftp.gnu.org/gnu/readline/readline-8.2.tar.gz
$ tar xf readline-8.2.tar.gz
$ cd readline-8.2/
$ ./configure --prefix=$install
$ make -j20 && make install
# 编译安装 libpsl
$ wget https://github.com/rockdaboot/libpsl/releases/download/0.21.5/libpsl-0.21.5.tar.gz
$ tar xf libpsl-0.21.5.tar.gz
$ cd libpsl-0.21.5/
$ ./configure --prefix=$install
$ make -j20 && make install
# 编译安装 curl
$ wget https://curl.se/download/curl-8.13.0.tar.gz
$ tar xf curl-8.13.0.tar.gz
$ cd curl-8.13.0/
$ ./configure --prefix=$install --with-ssl
$ make -j20 && make install
# 编译 R
$ wget https://cran.r-project.org/src/base/R-4/R-4.5.0.tar.xz
$ tar xf R-4.5.0.tar.xz
$ cd R-4.5.0/
# 如果系统没有安装图形界面,添加选项 --with-x=no
$ ./configure --enable-R-shlib --with-x=no --with-pcre1 --prefix=$install CPPFLAGS="-I$install/include" LDFLAGS="-L$install/lib"
$ make -j20 && make install
将所有依赖库以静态库的形式引用
依赖库 zlib readline libpsl curl ncurses pcre2 openssl bzip2 xz zstd 编译时 加上 -fPIC 选项
export CFLAGS="-O2 -fPIC"
export FFLAGS="-O2 -fPIC"
export FCFLAGS="-O2 -fPIC"
tar xf R-4.4.1.tar.gz
cd R-4.4.1
export PATH="/libpath/to/bin/:$PATH"
$ ./configure --prefix=/path/to/R/ --enable-R-static-lib --enable-static --with-x=no --with-cairo --with-readline=no LDFLAGS="-L/libpath/to/libs -static" CPPFLAGS="-I/libpath/to/include/" LIBS="-lreadline -lncursesw -lcurl -lssl -lcrypto -lpsl -llzma -lbz2 -lz -lrt -lzstd -lm -ldl -lpthread"
configure 执行完成之后,修改生成的 Makeconf 和 etc/Makeconf 文件 将所有的 -static 去掉
将 LIBS = -L/libpath/to/lib -lpcre2-8 -llzma -lbz2 -lz -lrt -ldl -lm -lreadline -lncursesw -lcurl -lssl -lcrypto -lpsl -llzma -lbz2 -lz -lrt -lzstd -lm -ldl -lpthread
替换为
LIBS = -L/libpath/to/lib -Wl,-Bstatic -lpcre2-8 -lreadline -lncursesw -lcurl -lssl -lcrypto -lpsl -llzma -lbz2 -lz -lzstd -Wl,-Bdynamic -lrt -lm -ldl -lpthread
最后在 make -j
RGT¶
项目地址:https://github.com/CostaLab/reg-gen
$ wget wget https://github.com/CostaLab/reg-gen/archive/refs/tags/RGT-1.0.2.tar.gz
$ tar xf RGT-1.0.2.tar.gz
$ cd RGT-1.0.2
# 将 hint THOR 依赖的 hmmlearn==0.2.2 改为 hmmlearn==0.2.7,添加 numpy<1.24
# 将 ./rgt/THOR/neg_bin_rep_hmm.py 中的 from hmmlearn.hmm import _BaseHMM 改为 from hmmlearn.base import _BaseHMM
$ pip install --prefix=/path/to/rgt/ .
rmats¶
项目地址 https://github.com/Xinglab/rmats-turbo
$ tar xf rmats_turbo_v4_3_0.tar.gz
$ cd rmats_turbo_v4_3_0/
$ export FC=gfortran
$ sed -i 's/-msse2//g' rMATS_C/lbfgs_scipy/Makefile
$ sed -i 's/-msse2//g' rMATS_C/Makefile
$ pip install --prefix=/path/to/rmats-turbo/ cython
$ module load arm/r/4.4.1
$ ./build_rmats
# 使用
run_rmats --b1 Y_Adipose_file.txt --b2 E_Adipose_file.txt --gtf Mus_musculus.GRCm39.114.gtf --od rmats/rMATs_Y_E/ --tmp rmats/tmp_WT_CRC/ -t paired --readLength 150 --variable-read-length --cstat 0.0001 --nthread 20
也可以参考 conda 中 rmats 的编译脚本
#!/bin/bash
set -xe
mkdir $PREFIX/rMATS
GSL_LDFLAGS="$(gsl-config --libs)"
GSL_CFLAGS="$(gsl-config --cflags)"
export GSL_LDFLAGS
export GSL_CFLAGS
export LD_LIBRARY_PATH=${PREFIX}/lib
case $(uname -m) in
aarch64)
sed -i.bak -e "s/-msse2//" rMATS_C/Makefile
;;
*)
;;
esac
make -j ${CPU_COUNT}
cp rmats.py $PREFIX/rMATS
cp cp_with_prefix.py $PREFIX/rMATS
mkdir $PREFIX/rMATS/rMATS_C
cp rMATS_C/rMATSexe $PREFIX/rMATS/rMATS_C
cp -R rMATS_P $PREFIX/rMATS
cp -R rMATS_R $PREFIX/rMATS
cp *.so $PREFIX/rMATS
chmod +x $PREFIX/rMATS/rmats.py
ln -s $PREFIX/rMATS/rmats.py $PREFIX/bin/rmats.py
ln -s $PREFIX/rMATS/rMATS_P/FDR.py $PREFIX/bin/FDR.py
ln -s $PREFIX/rMATS/rMATS_P/inclusion_level.py $PREFIX/bin/inclusion_level.py
ln -s $PREFIX/rMATS/rMATS_P/joinFiles.py $PREFIX/bin/joinFiles.py
ln -s $PREFIX/rMATS/rMATS_P/paste.py $PREFIX/bin/paste.py
# for backwards compatibility with the previous recipe, create a symlink named
# for the previously-used executable
ln -s $PREFIX/rMATS/rmats.py $PREFIX/bin/RNASeq-MATS.py
rmblast¶
项目地址:https://www.repeatmasker.org/rmblast/
$ wget https://www.repeatmasker.org/rmblast/rmblast-2.14.0+-x64-linux.tar.gz
$ wget https://www.repeatmasker.org/rmblast/isb-2.14.1+-rmblast.patch.gz
$ tar xf rmblast-2.14.0+-x64-linux.tar.gz
$ gzip -d isb-2.14.1+-rmblast.patch.gz
$ cd ncbi-blast-2.14.1+-src/
$ patch -p1 < ../isb-2.14.1+-rmblast.patch
$ cd c++/
$ ./configure --with-mt --without-debug --without-krb5 --without-openssl --with-projects=scripts/projects/rmblastn/project.lst --prefix=/path/to/rmblast
$ make -j20
$ make install
RNAstructure¶
项目地址 https://rna.urmc.rochester.edu/RNAstructureDownload.html
$ wget https://rna.urmc.rochester.edu/Releases/current/RNAstructureSource.tgz
$ tar xf RNAstructureSource.tgz
$ cd RNAstructure/
$ make all -j20
sambamba¶
项目地址 https://github.com/biod/sambamba
$ wget https://anaconda.org/bioconda/sambamba/1.0.1/download/linux-aarch64/sambamba-1.0.1-hc099486_2.tar.bz2
$ tar xf sambamba-1.0.1-hc099486_2.tar.bz2
$ bin/sambamba
samtools¶
静态编译
注意 ncurses 的编译,见 编译 ncurses。
$ tar xf samtools-1.22.1.tar.gz
$ cd samtools-1.22.1
$ export LDFLAGS="-static"
$ ./configure --prefix=/path/to/samtools/ CURSES_LIB="-L/path/to/ncurses//lib -lncursesw"
$ make -j
$ make install
$ ldd samtools
not a dynamic executable
smcpp¶
项目地址 https://github.com/popgenmethods/smcpp
smcpp 1.15.4 需要使用低版本 numpy ,pip 安装低版本 numpy 时出现下面的报错,使用 --ignore-installed 选项。
Permission denied: '/usr/lib/python3.9/site-packages/__pycache__/six.cpython-39.pyc'
Consider using the `--user` option or check the permissions.
$ module load arm/mpfr/4.1.0
$ pip install --prefix=/path/to/smcpp/1.15.4/ --ignore-installed --no-cache-dir --no-build-isolation "numpy<1.20" appdirs matplotlib pandas pysam scipy setuptools tqdm scikit-learn
$ module load arm/smcpp/1.15.4-py3.9
$ tar xf smcpp-1.15.4.tar.gz
$ cd smcpp-1.15.4
$ python setup.py install --prefix=/path/to/smcpp/1.15.4/
# 去掉告警
$ export PYTHONWARNINGS="ignore::UserWarning:smcpp.version"
$ /path/to/smcpp/1.15.4/bin/smc++ -h
usage: smc++ [-h] {chunk,cite,cv,estimate,plot,posterior,simulate,split,vcf2smc,version} ...
positional arguments:
{chunk,cite,cv,estimate,plot,posterior,simulate,split,vcf2smc,version}
chunk Sample randomly with replacement chunks from data file(s)
cite Print citation information for SMC++
cv Perform cross-validated estimation procedure.
estimate Estimate size history for one population
plot Plot size history from fitted model
posterior Store/visualize posterior decoding of TMRCA
simulate Simulate from a fitted model
split Estimate split time in two population model
vcf2smc Convert VCF to SMC++ format
version Print version string
optional arguments:
-h, --help show this help message and exit
smoothxg¶
项目地址 https://github.com/pangenome/smoothxg
$ git clone --recursive https://github.com/pangenome/smoothxg.git
# 提前编译 abPOA 静态库,否则后面使用cmake编译会出错
$ cd smoothxg/deps/abPOA/
# 更改代码,否则后面编译 smoothxg 会报错
$ sed -i 's/static const char/static const signed char/' src/abpoa_output.c
$ make
$ ls lib/libabpoa.a
# 更改 odgi 相关代码,否则编译 odgi 时会报错
$ cd ../odgi
# 去掉 -msse4.2 编译选项
$ sed -i 's/-msse4.2//g' ./CMakeLists.txt
$ sed -i 's/-msse4.2//g' ./deps/sdsl-lite/CMakeLists.txt
$ sed -i 's/-msse4.2//g' ./deps/mmmulti/deps/sdsl-lite/CMakeLists.txt
$ sed -i 's/arch=x86-64/arch=armv8-a/g' src/main.cpp
CMakeLists.txt,禁止编译 abPOA,使用上面编译好的 abPOA。 将 280 至 291 abPOA 相关的行注释掉,然后在下面添加这 3 行。
set(abpoa_SOURCE_DIR "${CMAKE_SOURCE_DIR}/deps/abPOA")
set(abpoa "${CMAKE_SOURCE_DIR}/deps/abPOA/lib/libabpoa.a")
include_directories("${CMAKE_SOURCE_DIR}/deps/abPOA/include")
将 268 行的 add_dependencies(smoothxg_objs abpoa) 注释掉。
module load arm/jemalloc/5.2.1 arm/gcc/10.3.0
mkdir build && cd build
$ cmake -DCMAKE_C_COMPILER=`which gcc` -DCMAKE_CXX_COMPILER=`which g++` ..
$ make -j20
$ ../bin/smoothxg -h
snoscan¶
wget http://eddylab.org/software/snoscan/snoscan.tar.gz
tar xf snoscan.tar.gz
cd snoscan-0.9.1
cd squid-1.5.11
make clean
make
cd ..
make clean
make
SPAdes¶
项目地址 https://github.com/ablab/spades
tar xf SPAdes-4.1.0.tar.gz
cd SPAdes-4.1.0
PREFIX=/path/to/spades/ ./spades_compile.sh -j 10
sratools¶
sratools编译需要 libstdc++.a 静态链接库,否则编译过程中会出现报错。
/usr/bin/ld: cannot find -lstdc++
collect2: error: ld returned 1 exit status
$ find /usr/ -name "*libstdc++.a*"
libstdc++.a,可自行编译安装 gcc。 sratools 安装依赖 ncbi-vdb。
$ git clone https://github.com/ncbi/ncbi-vdb
$ cd ncbi-vdb
$ ./configure --prefix=/path/to/ncbi-vdb/
$ make -j12 && make install
$ git clone https://github.com/ncbi/sra-tools
$ cd sra-tools
$ ./configure --with-ncbi-vdb-prefix=/path/to/ndcbi-vdb/ --prefix=/path/to/sra-tools/
$ make -j12 && make install
STAR¶
项目地址 https://github.com/alexdobin/STAR
$ git clone https://github.com/alexdobin/STAR
$ cd STAR/source
Makefile 文件中 CXXFLAGS_SIMD ?= -mavx2 整行注释,如下所示。 #CXXFLAGS_SIMD ?= -mavx2
然后 make
stringtie¶
项目地址 https://github.com/gpertea/stringtie
wget https://anaconda.org/bioconda/stringtie/3.0.0/download/linux-aarch64/stringtie-3.0.0-hac7b671_0.tar.bz2
$ tar xf stringtie-3.0.0-hac7b671_0.tar.bz2
$ ./bin/stringtie -h
suiteparse¶
项目地址 https://github.com/DrTimothyAldenDavis/SuiteSparse
tar xf c-7.10.2.tar.gz
cd SuiteSparse-7.10.2/
module load arm/gcc/12.2.0
cmake ../ -DCMAKE_INSTALL_PREFIX=/path/to/suitesparse/ -DCMAKE_C_COMPILER=`which gcc` -DCMAKE_CXX_COMPILER=`which g++` -DMPFR_INCLUDE_DIR=/path/to/mpfr/include/ -DMPFR_LIBRARY=/path/to/mpfr/lib/
make -j20
make install
syri¶
项目地址 https://github.com/schneebergerlab/syri
$ tar xf v1.7.0.tar.gz
$ cd syri-1.7.0
$ pip install --prefix=/path/to/syri/ numpy==1.21 cython==0.29.24 scipy pandas python-igraph psutil pysam matplotlib
$ PYTHONPATH=/path/to/syri/lib/python3.9/site-packages/:/path/to/syri/lib64/python3.9/site-packages/ python setup.py install --prefix=/path/to/syri/
$ export PYTHONPATH=/path/to/syri/lib/python3.9/site-packages/:/path/to/syri/lib64/python3.9/site-packages/:/path/to/syri/lib64/python3.9/site-packages/syri-0.0.0-py3.9-linux-aarch64.egg/
$ export PATH="/path/to/syri/bin/:$PATH"
$ syri -h
TE_finder¶
https://github.com/urgi-anagen/TE_finder
$ tar xf TE_finder-release-2.31.1.tar.gz
$ cd TE_finder-release-2.31.1/
$ mkdir build; cd build
$ cmake -DCPPUNIT_INCLUDE_DIR=/path/to/cppunit/include -DCPPUNIT_LIBRARY=/path/to/cppunit/lib/libcppunit.so ..
$ make -j20
$ make install
TIR-Learner¶
项目地址 https://github.com/lutianyu2001/TIR-Learner
$ tar xf TIR-Learner-3.0.7.tar.gz
$ cd TIR-Learner-3.0.7
$ cp -r TIR-Learner3/ /path/to/tir-learner/
$ pip install --prefix=/path/to/tir-learner/ biopython keras multiprocess pandas regex scikit-learn swifter torch torchvision torchaudio psutil
$ module load arm/blast/2.16.0 arm/genericrepeatfinder/1.0.2 arm/genometools/1.6.5
$ PYTHONPATH=//path/to//tir-learner/lib/python3.9/site-packages/://path/to//tir-learner/lib64/python3.9/site-packages/ /path/to/tir-learner/TIR-Learner3/TIR-Learner.py -h
trinity¶
$ vim ./Inchworm/CMakeLists.txt
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pipe -W -Wall -Wpedantic -fopenmp ")
$ vim ./Chrysalis/CMakeLists.txt
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -pipe -W -Wall -Wpedantic -fopenmp -pthread -m64")
$ vim trinity-plugins/ParaFly/configure
AM_CXXFLAGS=-m64 $OPENMP_CXXFLAGS
cd trinity-plugins/bamsifter/
rm -rf htslib/
wget https://github.com/samtools/htslib/releases/download/1.21/htslib-1.21.tar.bz2
tar xf htslib-1.21.tar.bz2
mv htslib-1.21 htslib
cd -
make
ucsc kent utils¶
$ module load arm/libpng/1.6.44 arm/mariadb/11.6.2
# 不使用 mysql 的 so 动态库
$ cd /dir/to/mariadb/lib
$ mkdir bak; mv *so* bak
# 下载编译 ucsc kent
$ wget https://hgdownload.cse.ucsc.edu/admin/exe/userApps.src.tgz
$ tar xf userApps.src.tgz
$ cd userApps
$ make -j20
$ ls /bin
# 恢复 mysql 的 so 动态库
$ cd /dir/to/mariadb/lib
$ mv bak/* .
$ module purge
ls -1 bin/* >> app_test.sh
# 测试命令,然后在日志中用error关键字搜索,查看是否有执行失败的命令
sh app_test.sh > app_test_log
vasp¶
使用 openblas、scalapack、fftw、gcc、华为MPI(hmpi) 编译 vasp。
openblas编译安装
# 载入 hmpi、gcc
module load gcc/hmpi/hmpi gcc/compiler/gccmodule
mkdir /path/to/vasp/dep/openblas/
tar xf OpenBLAS-0.3.28.tar.gz
cd OpenBLAS-0.3.28
export CC=`which gcc`
export CXX=`which g++`
export FC=`which gfortran`
make
make PREFIX=/path/to/vasp/dep/openblas/ install
使用常规方式安装 scalapack 会有类似 Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(8)/REAL(4)) 的报错,因此这里使用专门的安装工具安装 scalapack。
# 安装工具使用python2编写的
module load arm/python/2.7.18
# 载入 hmpi、gcc
module load gcc/hmpi/hmpi gcc/compiler/gccmodule
mkdir /path/to/vasp/dep/scalapack/
wget http://www.netlib.org/scalapack/scalapack_installer.tgz
tar xf scalapack_installer.tgz
cd scalapack_installer/
python ./setup.py --prefix=/path/to/vasp/dep/scalapack/ --mpiincdir=/path/to/hmpi/gcc/hmpi/include/ --downall --notesting
# 载入 hmpi、gcc
module load gcc/hmpi/hmpi gcc/compiler/gccmodule
mkdir /path/to/vasp/dep/fftw/
tar xf fftw-3.3.8.tar.gz
cd fftw-3.3.8/
./configure --prefix=/path/to/vasp/dep/fftw/ --enable-shared --enable-static --enable-fma --enable-neon
make
make install
vasp编译安装
# 载入 hmpi、gcc
module load gcc/hmpi/hmpi gcc/compiler/gccmodule
tar xf vasp.5.4.4.tar.gz
cd vasp.5.4.4
makefile.include 文件,文件内容如下。 这里面加了一个 -fallow-argument-mismatch 编译选项,否则会出现类似 Error: Type mismatch between actual argument at (1) and actual argument at (2) (REAL(8)/REAL(4)) 的报错,导致编译失败。
重点关注高亮的行。
最后 make,编译时间较长。编译成功后可执行文件在 ./bin/ 目录内。
# Precompiler options
CPP_OPTIONS= -DHOST=\"LinuxGNU\" \
-DMPI -DMPI_BLOCK=8000 \
-Duse_collective \
-DscaLAPACK \
-DCACHE_SIZE=4000 \
-Davoidalloc \
-Duse_bse_te \
-Dtbdyn \
-Duse_shmem
CPP = gcc -E -P -C -w $*$(FUFFIX) >$*$(SUFFIX) $(CPP_OPTIONS)
FC = mpif90
FCL = mpif90
FREE = -ffree-form -ffree-line-length-none
FFLAGS = -w -fallow-argument-mismatch
OFLAG = -O3 -ffp-contract=fast -fdec-math -ffpe-trap=invalid,zero,overflow -ffpe-summary=none
OFLAG_IN = $(OFLAG)
DEBUG = -O0
BLAS = -L$(LIBDIR) -lrefblas
LAPACK = -L$(LIBDIR) -ltmglib -llapack
BLACS =
SCALAPACK = -L$(LIBDIR) -lscalapack $(BLACS)
LLIBS = -L//path/to/vasp/dep/scalapack/lib/ -lscalapack -L/path/to/vasp/dep/openblas/lib/ -lopenblas
FFTW ?= /path/to/vasp/dep/fftw/
LLIBS += -L$(FFTW)/lib -lfftw3
INCS = -I$(FFTW)/include
OBJECTS = fftmpiw.o fftmpi_map.o fftw3d.o fft3dlib.o
OBJECTS_O1 += fftw3d.o fftmpi.o fftmpiw.o
OBJECTS_O2 += fft3dlib.o
# For what used to be vasp.5.lib
CPP_LIB = $(CPP)
FC_LIB = $(FC)
CC_LIB = gcc
CFLAGS_LIB = -O
FFLAGS_LIB = -O1
FREE_LIB = $(FREE)
OBJECTS_LIB= linpack_double.o getshmem.o
# For the parser library
CXX_PARS = g++
LIBS += parser
LLIBS += -Lparser -lparser -lstdc++
# Normally no need to change this
SRCDIR = ../../src
BINDIR = ../../bin
参考
https://www.vasp.at/wiki/index.php/Installing_VASP.5.X.X
VCF2Dis¶
项目地址 https://github.com/hewm2008/VCF2Dis
$ tar xf VCF2Dis-1.53.tar.gz
$ cd VCF2Dis-1.53/
$ sh make.sh
$ bin/VCF2Dis -help
vcflib¶
项目地址 https://github.com/vcflib/vcflib
git clone --recursive https://github.com/vcflib/vcflib
cd vcflib
mkdir build
cd build
$ export CMAKE_PREFIX_PATH=/path/to/pybind11/lib/python3.9/site-packages/pybind11/share/cmake/pybind11/:$CMAKE_PREFIX_PATH
# 这里载入之前安装的 htslib,否则 cmake 会自动下载编译 htslib,然后会出现 libcurl 相关的报错
$ module load arm/htslib/1.21 arm/pybind11/2.13.6-py3.9
$ cmake -DCMAKE_BUILD_TYPE=Debug -DZIG=OFF -DWFA_GITMODULE=ON -DCMAKE_INSTALL_PREFIX=/path/to/vcflib/ ..
$ cmake --build . -- -j 20
$ cmake --install .
静态编译
在 CMAakeList.txt 中 PROJECT 之前 添加 set(CMAKE_TRY_COMPILE_TARGET_TYPE STATIC_LIBRARY)
$ git clone --recursive https://github.com/vcflib/vcflib
$ cd vcflib
$ mkdir build && cd build
$ cmake -DCMAKE_BUILD_TYPE=Debug -DZIG=OFF -DWFA_GITMODULE=ON -DCMAKE_INSTALL_PREFIX=/path/to/vcflib/ -DBZIP2_LIBRARIES=/path/to/bzip2/lib/ -DBZIP2_INCLUDE_DIR=/path/to/bzip2/include -DBUILD_STATIC=ON -DCMAKE_CXX_FLAGS=" -pthread -fopenmp -lgomp" ..
# 将 CMakeFiles 下所有的 libwfa2.so.0 替换为 libwfa2.a
$ find CMakeFiles -type f -name link.txt -exec sed -i 's|libwfa2\.so\.0|libwfa2.a|g' {} +
# 将 libwfa2.so.0 替换为 libwfa2.a
$ sed -i 's|libwfa2\.so\.0|libwfa2.a|g' contrib/WFA2-lib/CMakeFiles/align_benchmark.dir/link.txt
# 文件末尾添加编译选项 -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -fopenmp -lgomp
$ sed -i '${s|$| -Wl,--whole-archive -lpthread -Wl,--no-whole-archive -fopenmp -lgomp|}' contrib/WFA2-lib/CMakeFiles/align_benchmark.dir/link.txt
$ make -j VERBOSE=1
# 测试
$ ldd vcfwave
not a dynamic executable
vcfhub¶
项目地址 https://github.com/pangenome/vcfbub
module load arm/llvm/18.1.8 arm/rust/1.85.1
git clone https://github.com/pangenome/vcfbub.git
cd vcfhub
cargo install --path .
./target/release/vcfbub -h
本站总访问量 次