I tried to build custom blast because of NCBI Blast+ can't support degenerate code searching, especially, when search an X, it was considered as mismatch. So, I changed the score martrix for PAM30 in source code. But the executables such as blastp, blastn that I built were a little different, the size of each one was less than official installers. Then I found the commands from the file 'ncbi_package_info' in official release.
>>>>> blastp
blastp: 2.9.0+
Package: blast 2.9.0, build Mar 11 2019 15:20:05
Package-Config: Linux64-Centos : icc : ./c++/compilers/unix/ICC.sh --with-bin-release --with-strip --without-debug --without-pcre --with-mt --with-openmp --with-flat-makefile --with-experimental=Int8GI --without-vdb --without-gnutls --without-gcrypt --with-build-root-sfx=--Linux64-Centos-icc --with-flat-makefile --with-ncbi-public --without-ccache --without-caution --without-runpath --without-makefile-auto-update --with-projects=scripts/projects/blast/project.lst --with-internal
Build-Signature: ICC_1503-ReleaseMT64--x86_64-unknown-linux3.10.0-gnu2.17-coremake22
Build-Date: Mar 11 2019 16:07:04
Production-Version: 20190103
After tried serveral times, I noticed one parameter '--without-optimization' impacts the size of exectuables. But the size is still different. Does anybody know what kind of parameters to build the same exectuables like the official release?
Note: below is the whole content in configure file.
#!/bin/sh
srcdir=`dirname $0`
exec $srcdir/configure.orig --without-optimization --with-bin-release --with-strip --without-debug --without-pcre --with-mt --with-openmp --with-flat-makefile --with-experimental=Int8GI --without-vdb --without-gnutls --without-gcrypt --with-build-root-sfx=--Linux64-Centos-icc --with-flat-makefile --with-ncbi-public --without-ccache --without-caution --without-runpath --without-makefile-auto-update --with-projects=scripts/projects/blast/project.lst --with-internal ${1+"$@"}
I would not worry about difference in executable size. There are many reasons why size would be different: computer architecture, compilers,
static
compilation, debugging options, stripping after compilation. The whole point of running a configuration process is to find a combination of parameters that is best for your own system, which may not be exactly the same as with NCBI executable. It should not affect how the program works in any substantial way.I don't see why you would want to do
--without-optimization
even though it will likely make the executable smaller - speed is presumably more important than executable size.