Repository navigation
NCBI Blast 源码编译安装 #155
shenweiyan
announced in
1.1-生信
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
记录一下在老破旧服务器从源码编译安装 NCBI Blast 2.15.0+ 遇到的一些问题。
先说一下,总体的安装步骤。
首先,根据
ncbi-blast-2.xx.x+-src/c++/src/algo/blast/core/README的说明,blast+ 的源码编译安装,直接通过下面命令即可:./configure --with-projects=scripts/projects/blast_core_lib.lst \ --without-debug --with-mt --with-build-root=ReleaseMT cd ReleaseMT/build make all_p其实
configure这一步的最后也会有提示:$ ./configure --with-projects=scripts/projects/blast_core_lib.lst \ --without-debug --with-mt --with-build-root=ReleaseMT =============================================================================== NCBI C++ Toolkit documentation: Online: https://www.ncbi.nlm.nih.gov/toolkit/doc/book/ Local: ./doc/public/index.html For the available configuration flags run: ./configure --help CFLAGS = -Wall -Wno-format-y2k -pthread -fopenmp -O2 -fPIC CXXFLAGS = -Wall -Wno-format-y2k -pthread -fopenmp -O2 -fPIC CPPFLAGS = -DNDEBUG -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -D_MT -D_REENTRANT -D_THREAD_SAFE LDFLAGS = -Wl,--enable-new-dtags -Wl,-export-dynamic -pthread -fopenmp -O2 LIBRARIES: build as static by default FEATURES: Int8GI GCC MT LFS DLL unix WinMain Linux PACKAGES: enabled: UUID Iconv Z BZ2 PCRE LocalPCRE MBEDTLS GMP GMP OPENSSL KRB5 CURL MySQL BerkeleyDB BerkeleyDB++ PYTHON PYTHON27 PYTHON3 PERL Boost.Iostreams Boost.Program-Options Boost.Regex Boost.Serialization Boost.Spirit Boost.Test.Included OpenGL GLUT GLEW EXPAT LIBXML LIBXSLT LIBEXSLT SQLITE3 HDF5 JPEG PNG TIFF XPM FreeType LMDB LocalLMDB LIBUV disabled: FUSE LIBUNWIND LIBDW BACKWARD_CPP LocalZ LocalBZ2 LZO ZSTD GCRYPT NETTLE GNUTLS Sybase DBLib FreeTDS ODBC PYTHON25 PYTHON26 Boost.Chrono Boost.Filesystem Boost.System Boost.Test Boost.Thread C-Toolkit NCBICRYPT MESA wxWidgets wx2.8 Fast-CGI FASTCGIPP LocalSSS LocalMSGMAIL2 SSSUTILS LocalNCBILS NCBILS2 SSSDB SP ORBacus ICU SABLOT Xerces Xalan Zorba SQLITE3ASYNC VDB NGS OECHEM SGE DRMAA2 MUPARSER GIF UNGIF GL2PS FTGL MAGIC MIMETIC GSOAP AVRO Cereal SASL2 MONGODB MONGODB3 LEVELDB LIBURING ROCKSDB GMOCK LAPACK LIBSSH2 CASSANDRA NGHTTP2 H2O INFLUXDB LIBXLSXWRITER PROTOBUF GRPC MSGSL AWS_SDK CRC32C GOOGLE_CLOUD HIREDIS APACHE_ARROW LIBRDKAFKA CPPKAFKA THRIFT NLohmann_JSON YAML_CPP OPENTRACING JAEGER PROJECTS: enabled: cgi serial objects dbapi app algo disabled: bdb ctools gui gbench Tools / flags / paths: /software/src/build/ncbi-blast-2.16.0+-src/c++/ReleaseMT/build/Makefile.mk Configuration header: /software/src/build/ncbi-blast-2.15.0+-src/c++/ReleaseMT/inc/ncbiconf_unix.h To build everything: cd /software/src/build/ncbi-blast-2.15.0+-src/c++/ReleaseMT/build && /opt/rh/devtoolset-7/root/usr/bin/make all_r or simply run /opt/rh/devtoolset-7/root/usr/bin/make in the current directory To build selected projects (as listed in "scripts/projects/blast_core_lib.lst"): cd /software/src/build/ncbi-blast-2.15.0+-src/c++/ReleaseMT/build && /opt/rh/devtoolset-7/root/usr/bin/make all_p ******* CONFIGURATION SUCCESSFUL *******梳理一下它整个步骤,其实就是
configure→ 生成Makefile.mk→make。Makefile.mk
很不幸的是,个人在 CentOS 6.5 的老破旧服务器上执行
configure或者make出现了Makefile.mk:682: *** missing separator. Stop.的异常。对于这个突如其来的错误,本人最开始也想当然的认为这是
Makefile语法的一个BUG,很明显 Makefile 中命令的前缀默认要使用 Tab, 不能使用 4 个空格代替,因此需要在Makefile.mk682 行开始用 Tab 替换四个空格开头的行。事实上,这个问题的根本原因并非单纯的

Makefile语法的问题,而是问题出现在configure→ 生成Makefile.mk这一步。经过对configure源码排查了一下发现,问题就出在curl-config --static-libs的错误输出被直接插入到了Makefile中,导致make误解析这些文本(如--ca,--cc等)为Makefile规则,从而引发missing separator和ignoring old recipe错误。因此,有几个解决方法。
方法1,修改
Makefile.mk,确保正确处理curl-config的输出。例如:方法2:如果系统支持
pkg-config,可以改用更可靠的方式获取libcurl链接信息。方法3:在
configure一步中通过--without-curl来禁用libcurl。ZLIB_VER_MAJOR
make过程中出现ZLIB_VER_MAJOR相关错误:最后,想说的是,以上扒拉扒拉折腾了那么多,到最后还是没能完整安装起来,只好先放弃了,后面有时间再慢慢去 debug 看看吧。
All reactions