Cannot build ABYSS-P, MPI_Init in -lmpi... no

141 views
Skip to first unread message

Chris Coffey

unread,
Nov 14, 2014, 1:20:58 PM11/14/14
to abyss...@googlegroups.com
Hi,


When I build abyss, ABYSS-P is not compiled. I'm guessing it's because the linker cannot find the libmpi.so file ( MPI_Init in -lmpi... no) during the build but I can't figure why. I cannot get the abyss configure script to find the openmpi libraries that it needs. Here is my info:

Abyss ver: 1.5.2
Distro: EL6.5
MPI: openmpi 1.6.5


Here is my configure command:

./configure CPPFLAGS="-I/packages/sparsehash/2.0.2/include" --prefix=/packages/abyss/1.5.2 --with-mpi=/usr/mpi/gcc/openmpi-1.6.5 --with-boost


But the library is in the linkers path:

ldconfig -v|grep -i mpi

/usr/mpi/gcc/openmpi-1.6.5/lib64:

libmpi_f90.so.1 -> libmpi_f90.so.1.3.0

libmpi.so.1 -> libmpi.so.1.0.8

libmpi_cxx.so.1 -> libmpi_cxx.so.1.0.2

libvt-mpi.so.0 -> libvt-mpi.so.0.0.0

libvt-mpi-unify.so.0 -> libvt-mpi-unify.so.0.0.0

libmpi_f77.so.1 -> libmpi_f77.so.1.0.7

libompitrace.so.0 -> libompitrace.so.0.0.0


And here is the configure output:


checking for a BSD-compatible install... /usr/bin/install -c

checking whether build environment is sane... yes

checking for a thread-safe mkdir -p... /bin/mkdir -p

checking for gawk... gawk

checking whether make sets $(MAKE)... yes

checking whether make supports nested variables... yes

checking for gawk... (cached) gawk

checking for gcc... gcc

checking whether the C compiler works... yes

checking for C compiler default output file name... a.out

checking for suffix of executables...

checking whether we are cross compiling... no

checking for suffix of object files... o

checking whether we are using the GNU C compiler... yes

checking whether gcc accepts -g... yes

checking for gcc option to accept ISO C89... none needed

checking whether gcc understands -c and -o together... yes

checking for style of include used by make... GNU

checking dependency style of gcc... gcc3

checking how to run the C preprocessor... gcc -E

checking for g++... g++

checking whether we are using the GNU C++ compiler... yes

checking whether g++ accepts -g... yes

checking dependency style of g++... gcc3

checking for ranlib... ranlib

checking for ghc... no

checking for ghc-pkg... no

./configure: line 5182: : command not found

checking for grep that handles long lines and -e... /bin/grep

checking for egrep... /bin/grep -E

checking for ANSI C header files... yes

checking for sys/types.h... yes

checking for sys/stat.h... yes

checking for stdlib.h... yes

checking for string.h... yes

checking for memory.h... yes

checking for strings.h... yes

checking for inttypes.h... yes

checking for stdint.h... yes

checking for unistd.h... yes

checking dlfcn.h usability... yes

checking dlfcn.h presence... yes

checking for dlfcn.h... yes

checking fcntl.h usability... yes

checking fcntl.h presence... yes

checking for fcntl.h... yes

checking float.h usability... yes

checking float.h presence... yes

checking for float.h... yes

checking limits.h usability... yes

checking limits.h presence... yes

checking for limits.h... yes

checking stddef.h usability... yes

checking stddef.h presence... yes

checking for stddef.h... yes

checking for stdint.h... (cached) yes

checking for stdlib.h... (cached) yes

checking sys/param.h usability... yes

checking sys/param.h presence... yes

checking for sys/param.h... yes

checking for stdbool.h that conforms to C99... yes

checking for _Bool... yes

checking for ANSI C header files... (cached) yes

checking whether byte ordering is bigendian... no

checking for an ANSI C-conforming const... yes

checking for inline... inline

checking for ptrdiff_t... yes

checking for mode_t... yes

checking for pid_t... yes

checking for size_t... yes

checking for ssize_t... yes

checking for int64_t... yes

checking for uint8_t... yes

checking for uint16_t... yes

checking for uint32_t... yes

checking for uint64_t... yes

checking for std::hash<int>... no

checking for std::tr1::hash<int>... yes

checking for dup2... yes

checking for gethostname... yes

checking for getopt_long... yes

checking for getpagesize... yes

checking for memset... yes

checking for strdup... yes

checking for strerror... yes

checking for strtoul... yes

checking vfork.h usability... no

checking vfork.h presence... no

checking for vfork.h... no

checking for fork... yes

checking for vfork... yes

checking for working fork... yes

checking for working vfork... (cached) yes

checking for stdlib.h... (cached) yes

checking for GNU libc compatible malloc... yes

checking for working memcmp... yes

checking for stdlib.h... (cached) yes

checking for GNU libc compatible realloc... yes

checking for vprintf... yes

checking for _doprnt... no

checking whether HOST_NAME_MAX is declared... yes

checking mpi.h usability... yes

checking mpi.h presence... yes

checking for mpi.h... yes

checking for MPI_Init in -lmpi... no

checking for sqrt in -lm... yes

checking for pow... yes

checking for sqrt... yes

checking for ceilf... yes

checking for dlsym in -ldl... yes

checking how to run the C++ preprocessor... g++ -E

checking functional usability... yes

checking functional presence... yes

checking for functional... yes

checking tr1/functional usability... yes

checking tr1/functional presence... yes

checking for tr1/functional... yes

checking boost/functional/hash.hpp usability... yes

checking boost/functional/hash.hpp presence... yes

checking for boost/functional/hash.hpp... yes

checking boost/property_map/property_map.hpp usability... yes

checking boost/property_map/property_map.hpp presence... yes

checking for boost/property_map/property_map.hpp... yes

checking google/sparse_hash_map usability... yes

checking google/sparse_hash_map presence... yes

checking for google/sparse_hash_map... yes

checking unordered_map usability... no

checking unordered_map presence... no

checking for unordered_map... no

checking tr1/unordered_map usability... yes

checking tr1/unordered_map presence... yes

checking for tr1/unordered_map... yes

checking unordered_set usability... no

checking unordered_set presence... no

checking for unordered_set... no

checking tr1/unordered_set usability... yes

checking tr1/unordered_set presence... yes

checking for tr1/unordered_set... yes

checking boost/unordered_set.hpp usability... yes

checking boost/unordered_set.hpp presence... yes

checking for boost/unordered_set.hpp... yes

checking gtest/gtest.h usability... no

checking gtest/gtest.h presence... no

checking for gtest/gtest.h... no

checking for pthread_create in -lpthread... yes

checking for main in -lgtest_main... no

checking for g++ option to support OpenMP... -fopenmp

checking that generated files are newer than configure... done

configure: creating ./config.status

config.status: creating Makefile

config.status: creating ABYSS/Makefile

config.status: creating Align/Makefile

config.status: creating Assembly/Makefile

config.status: creating Common/Makefile

config.status: creating DataLayer/Makefile

config.status: creating FMIndex/Makefile

config.status: creating Graph/Makefile

config.status: creating Parallel/Makefile

config.status: creating bin/Makefile

config.status: creating doc/Makefile

config.status: creating dialign/Makefile

config.status: creating kmerprint/Makefile

config.status: creating AdjList/Makefile

config.status: creating Konnector/Makefile

config.status: creating DAssembler/Makefile

config.status: creating DistanceEst/Makefile

config.status: creating Layout/Makefile

config.status: creating Map/Makefile

config.status: creating Misc/Makefile

config.status: creating Overlap/Makefile

config.status: creating PopBubbles/Makefile

config.status: creating Scaffold/Makefile

config.status: creating SimpleGraph/Makefile

config.status: creating MergePaths/Makefile

config.status: creating KAligner/Makefile

config.status: creating ParseAligns/Makefile

config.status: creating PathOverlap/Makefile

config.status: creating Consensus/Makefile

config.status: creating FilterGraph/Makefile

config.status: creating GapFiller/Makefile

config.status: creating Unittest/Makefile

config.status: creating LogKmerCount/Makefile

config.status: creating Bloom/Makefile

config.status: creating config.h

config.status: executing depfiles commands

Chris Coffey

unread,
Nov 14, 2014, 1:49:13 PM11/14/14
to abyss...@googlegroups.com
I managed to fix the issue by editing the Parallel/Make file:

MPI_LIBS = /usr/mpi/gcc/openmpi-1.6.5/lib64/libmpi.so

So, some how the configure script needs to be changed to find it as I've specified correctly the openmpi location with --with-mpi=/usr/mpi/gcc/openmpi-1.6.5 .  It could be that the reason the issue occurs is because in the Parallel/Makefile it has:

LDFLAGS = -L/usr/mpi/gcc/openmpi-1.6.5/lib

Instead of:

LDFLAGS = -L/usr/mpi/gcc/openmpi-1.6.5/lib64

Thanks!

Chris

Ben Vandervalk

unread,
Nov 14, 2014, 1:54:02 PM11/14/14
to Chris Coffey, abyss...@googlegroups.com
Thanks for posting your fix!

- Ben

--
You received this message because you are subscribed to the Google Groups "ABySS" group.
To unsubscribe from this group and stop receiving emails from it, send an email to abyss-users...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Anthony Raymond

unread,
Nov 14, 2014, 2:03:25 PM11/14/14
to Chris Coffey, abyss...@googlegroups.com
Hi Chris,

Thanks for pointing this out!

Alternative to modifying the Makefile, you could also specify the LDFLAGS in the configure command:
./configure LDFLAGS=-L/usr/mpi/gcc/openmpi-1.6.5/lib64 CPPFLAGS="-I/packages/sparsehash/2.0.2/include" --prefix=/packages/abyss/1.5.2 --with-mpi=/usr/mpi/gcc/openmpi-1.6.5

I'll make it so the next release of abyss doesn't require this when the $mpidir/lib folder is not present.

Thanks,
Tony

Reply all
Reply to author
Forward
0 new messages