跳转至

ARM软件编译

参考

ARM平台NEON指令的编译和优化

鲲鹏软件性能调优基础知识

x86移植到鲲鹏常见编译脚本、编译选项移植、builtin函数、内联汇编函数替换汇总

鲲鹏论坛-鲲鹏HPC

鲲鹏开源应用软件移植指南-生命科学

SSE2NEON安装与配置完全指南

在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

https://cmake.org/download/

直接下载编译好的 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

参考

https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpenggromacs_02_0027.html

$ 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

参考

https://www.hikunpeng.com/document/detail/zh/kunpenghpcs/hpcindapp/prtg-osc/kunpenggromacs_02_0027.html

$ 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.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 -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.alibcblas.aliblapack.aliblapacke.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.alibcblas.aliblapack.aliblapacke.a 这几个文件,没有的话重新编译一次。

  1. 头文件路径

cblas头文件路径: lapack-3.10.1/CBLAS/include

lapacke头文件路径: lapack-3.10.0/LAPACKE/include

cblasblas 的 c 接口,lapackelapack 的 c 接口,由于 blaslapack 是 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/
下载 pangenie
$ 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

项目地址 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
将 Makefile 文件的

#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
将 Makefile 文件的

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
编译安装 sratools。
$ 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
本文阅读量  次
本站总访问量  次