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”的个数,通常可用于优化与位操作相关的算法。 解决:移除该编译选项
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¶
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
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
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
cmake¶
直接下载编译好的 aarch64 版本 cmake-3.30.5-linux-aarch64.sh
bowtie2¶
直接下载编译好的二进制文件
https://github.com/BenLangmead/bowtie2/releases
EDTA¶
glob2
https://github.com/lutianyu2001/TIR-Learner
exonerate¶
下载二进制版本
$ wget https://anaconda.org/bioconda/exonerate/2.4.0/download/linux-aarch64/exonerate-2.4.0-he4d9ad3_8.tar.bz2
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
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
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
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
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
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
gromacs with plumd2
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
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.h
aligner_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 -j12
hifiasm¶
项目地址 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
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
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
mafft¶
参考 https://mafft.cbrc.jp/alignment/software/installation_without_root.html
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
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
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
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
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
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 版本
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
。
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
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
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
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
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
本站总访问量 次