[Trilinos-Users] Does not find MPI symbols when compiling for shared libraries

Michael Bieri mibieri at iis.ee.ethz.ch
Mon May 23 12:40:12 EDT 2016


Hi

In another thread, I got recommended to enable

-D BUILD_SHARED_LIBS=ON

Now, linking seems to fail. As soon as a library is getting linked (command
below), MPI symbols are not found. That's no suprise, since I can not see
that MPI libraries would be given as arguments to the linker:

/usr/bin/g++  -I/usr/local/include -std=c++11 -g -dynamiclib
-Wl,-headerpad_max_install_names -compatibility_version 12.0.0
-current_version 12.6.3 -o libteuchoscore.12.6.3.dylib -install_name
/trilinos_mac/trilinos/trilinos-12.6.3-Build2/packages/teuchos/core/src/libteuchoscore.12.dylib
CMakeFiles/teuchoscore.dir/Teuchos_ArrayView.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_CommandLineProcessor.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_CWrapperSupport.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_Describable.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_Details_Allocator.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_dyn_cast.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_GlobalMPISession.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_HashUtils.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_LabeledObject.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_Ptr.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_Range1D.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_RCPNode.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_ScalarTraits.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_stacktrace.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_StrUtils.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_TabularOutputter.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_TestForException.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_TestingHelpers.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_Time.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_TypeNameTraits.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_UnitTestBase.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_UnitTestRepository.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_Utils.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_VerboseObject.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_VerbosityLevel.cpp.o
CMakeFiles/teuchoscore.dir/Teuchos_Workspace.cpp.o
../../../kokkos/core/src/libkokkoscore.12.6.3.dylib


However, I have set my compiler wrappers for MPI off, but extra link flags
for the libraries:

-D MPI_USE_COMPILER_WRAPPERS=OFF
-D Trilinos_EXTRA_LINK_FLAGS="-L/usr/local/lib -lmpi_cxx -lmpi
-L/usr/local/gfortran/lib -lgfortran

Problem happens on my Mac, while a Linux machine with nearly the same
configuration works fine.

Full configuration script here:

EXTRA_ARGS=$@


cmake \

-D CMAKE_INSTALL_PREFIX:PATH=/trilinos_mac/trilinos/trilinos-12.6.3-Install
\
-D CMAKE_BUILD_TYPE:STRING=DEBUG \
-D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++ \
-D CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc \
-D CMAKE_Fortran_COMPILER:FILEPATH=/usr/local/bin/gfortran \
-D HAVE_GCC_ABI_DEMANGLE:BOOL=ON \
-D Trilinos_ENABLE_EXPLICIT_INSTANTIATION=ON \
-D BUILD_SHARED_LIBS=ON \
-D Trilinos_WARNINGS_AS_ERRORS_FLAGS:STRING="" \
-D CMAKE_VERBOSE_MAKEFILE:BOOL=TRUE \
-D Trilinos_ENABLE_ALL_PACKAGES:BOOL=FALSE \
-D Trilinos_ENABLE_Epetra:BOOL=ON \
-D Trilinos_ENABLE_Tpetra:BOOL=ON \
-D Trilinos_ENABLE_Belos:BOOL=ON \
-D Trilinos_ENABLE_Ifpack2:BOOL=ON \
-D Trilinos_ENABLE_Ifpack:BOOL=ON \
-D Trilinos_ENABLE_Galeri:BOOL=ON \
-D Trilinos_ENABLE_Amesos:BOOL=ON \
-D Trilinos_ENABLE_AztecOO:BOOL=ON \
-D Trilinos_ENABLE_NOX:BOOL=ON \
-D Trilinos_ENABLE_ML:BOOL=ON \
-D Trilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=ON \
-D Trilinos_ENABLE_TESTS:BOOL=ON \
-D Trilinos_ENABLE_EXAMPLES:BOOL=ON \
-D TPL_ENABLE_MPI:BOOL=ON \
-D MPI_USE_COMPILER_WRAPPERS=OFF \
-D MPI_BASE_DIR:PATH="/usr/local” \
-D MPI_BIN_DIR:PATH="/usr/local/bin" \
-D MPI_EXEC_MAX_NUMPROCS:STRING=4 \
-D MPI_EXEC:FILEPATH="mpiexec” \
-D MPI_EXEC_NUMPROCS_FLAG:STRING=-np \
-D BLAS_LIBRARY_NAMES:STRING="blas" \
-D BLAS_LIBRARY_DIRS:PATH=/usr/lib/libblas \
-D LAPACK_LIBRARY_NAMES:STRING="lapack" \
-D LAPACK_LIBRARY_DIRS:PATH=/usr/lib/lapack \
-D CMAKE_C_FLAGS="-I/usr/local/include" \
-D CMAKE_CXX_FLAGS="-I/usr/local/include" \
-D CMAKE_Fortran_FLAGS="-I/usr/local/include" \
-D Trilinos_EXTRA_LINK_FLAGS="-L/usr/local/lib -lmpi_cxx -lmpi
-L/usr/local/gfortran/lib -lgfortran" \
$EXTRA_ARGS \
../trilinos-12.6.3-Source

How can I achieve that the linking of the library finds the symbols?

Best regards
Michael
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://trilinos.org/pipermail/trilinos-users/attachments/20160523/7494df33/attachment.html>


More information about the Trilinos-Users mailing list