v1.7.3 linux - lib compile error (trilinos)
Object-oriented equation-based modelling and optimisation software
Brought to you by:
ciroki
I tried compiling the libraries, and encountered the following error. It seems the problem is when building the trilinos library. I don't really understand what's happening, maybe it's a problem with my setup, but I followed the instructions step by step and installed all dependencies.
Ubuntu 16.04, system python.
$ sh compile_libraries.sh all
[...]
In file included from /home/ondrej/repo/daetools-code/trilinos/packages/ifpack/src/Ifpack.cpp:56:0:
/home/ondrej/repo/daetools-code/trilinos/packages/ifpack/src/Ifpack_SparseContainer.h: In member function ‘virtual int Ifpack_SparseContainer<T>::Initialize()’:
/home/ondrej/repo/daetools-code/trilinos/packages/ifpack/src/Ifpack_SparseContainer.h:394:48: error: ‘Epetra_DataAccess’ is not a class or namespace
Matrix_ = Teuchos::rcp( new Epetra_CrsMatrix(Epetra_DataAccess::Copy,*Map_,0) );
^
[ 74%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_LocalFilter.cpp.o
[ 74%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_NodeFilter.cpp.o
[ 74%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_SingletonFilter.cpp.o
[ 74%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_DropFilter.cpp.o
[ 74%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_SparsityFilter.cpp.o
[ 74%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_ReorderFilter.cpp.o
[ 74%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_DiagonalFilter.cpp.o
[ 75%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_Graph_Epetra_RowMatrix.cpp.o
[ 75%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_Graph_Epetra_CrsGraph.cpp.o
[ 75%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_Utils.cpp.o
[ 75%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_SPARSKIT.cpp.o
[ 75%] Building CXX object packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack_Chebyshev.cpp.o
packages/ifpack/src/CMakeFiles/ifpack.dir/build.make:422: recipe for target 'packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack.cpp.o' failed
make[2]: *** [packages/ifpack/src/CMakeFiles/ifpack.dir/Ifpack.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
CMakeFiles/Makefile2:3377: recipe for target 'packages/ifpack/src/CMakeFiles/ifpack.dir/all' failed
make[1]: *** [packages/ifpack/src/CMakeFiles/ifpack.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 75%] Linking CXX static library libthyraepetraext.a
[ 75%] Built target thyraepetraext
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
Also, I tried using a newer version of trilinos (12.12.1) and got another error
In file included from /home/ondrej/repo/daetools-code/trilinos/packages/xpetra/src/BlockedCrsMatrix/Xpetra_BlockedCrsMatrix.hpp:61:0,
from /home/ondrej/repo/daetools-code/trilinos/packages/xpetra/sup/Utils/Xpetra_ThyraUtils.cpp:51:
/home/ondrej/repo/daetools-code/trilinos/packages/xpetra/src/BlockedVector/Xpetra_BlockedVector.hpp: In member function ‘virtual void Xpetra::BlockedVector<S, LO, GO, N>::elementWiseMultiply(Scalar, const Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>&, const Vector&, Scalar)’:
/home/ondrej/repo/daetools-code/trilinos/packages/xpetra/src/BlockedVector/Xpetra_BlockedVector.hpp:387:70: error: ‘>>’ should be ‘> >’ within a nested template argument list
RCP<const Xpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node>> rcpA = Teuchos::rcpFromRef(A);
^
In file included from /home/ondrej/repo/daetools-code/trilinos/packages/xpetra/src/BlockedCrsMatrix/Xpetra_BlockedCrsMatrix.hpp:61:0,
from /home/ondrej/repo/daetools-code/trilinos/packages/xpetra/sup/Utils/Xpetra_MatrixMatrix.hpp:53,
from /home/ondrej/repo/daetools-code/trilinos/packages/xpetra/sup/Utils/Xpetra_IteratorOps.hpp:53,
from /home/ondrej/repo/daetools-code/trilinos/packages/xpetra/sup/Utils/Xpetra_IteratorOps.cpp:47:
/home/ondrej/repo/daetools-code/trilinos/packages/xpetra/src/BlockedVector/Xpetra_BlockedVector.hpp: In member function ‘virtual void Xpetra::BlockedVector<S, LO, GO, N>::elementWiseMultiply(Scalar, const Xpetra::Vector<Scalar, LocalOrdinal, GlobalOrdinal, Node>&, const Vector&, Scalar)’:
/home/ondrej/repo/daetools-code/trilinos/packages/xpetra/src/BlockedVector/Xpetra_BlockedVector.hpp:387:70: error: ‘>>’ should be ‘> >’ within a nested template argument list
RCP<const Xpetra::Vector<Scalar,LocalOrdinal,GlobalOrdinal,Node>> rcpA = Teuchos::rcpFromRef(A);
^
/home/ondrej/repo/daetools-code/trilinos/packages/xpetra/sup/Utils/Xpetra_ThyraUtils.cpp: In static member function ‘static Teuchos::RCP<Thyra::LinearOpBase<double> > Xpetra::ThyraUtils<double, int, int, Kokkos::Compat::KokkosSerialWrapperNode>::toThyra(const Teuchos::RCP<Xpetra::BlockedCrsMatrix<double, int, int, Kokkos::Compat::KokkosSerialWrapperNode> >&)’:
/home/ondrej/repo/daetools-code/trilinos/packages/xpetra/sup/Utils/Xpetra_ThyraUtils.cpp:70:162: error: ‘>>’ should be ‘> >’ within a nested template argument list
Teuchos::RCP<Xpetra::CrsMatrixWrap<double, int, int, EpetraNode> > Ablock_wrap = Teuchos::rcp_dynamic_cast<Xpetra::CrsMatrixWrap<double, int, int, EpetraNode>>(Ablock);
^
packages/xpetra/sup/CMakeFiles/xpetra-sup.dir/build.make:86: recipe for target 'packages/xpetra/sup/CMakeFiles/xpetra-sup.dir/Utils/Xpetra_IteratorOps.cpp.o' failed
make[2]: *** [packages/xpetra/sup/CMakeFiles/xpetra-sup.dir/Utils/Xpetra_IteratorOps.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
packages/xpetra/sup/CMakeFiles/xpetra-sup.dir/build.make:62: recipe for target 'packages/xpetra/sup/CMakeFiles/xpetra-sup.dir/Utils/Xpetra_ThyraUtils.cpp.o' failed
make[2]: *** [packages/xpetra/sup/CMakeFiles/xpetra-sup.dir/Utils/Xpetra_ThyraUtils.cpp.o] Error 1
CMakeFiles/Makefile2:2853: recipe for target 'packages/xpetra/sup/CMakeFiles/xpetra-sup.dir/all' failed
make[1]: *** [packages/xpetra/sup/CMakeFiles/xpetra-sup.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 80%] Linking CXX static library libifpack.a
[ 80%] Built target ifpack
Makefile:160: recipe for target 'all' failed
make: *** [all] Error 2
Anonymous
Hi again,
Yes, there is a compilation problem with trilinos that I am aware of. New versions require newer gcc versions too. It's hard to tell exactly what are the problems, but I think some c++11 features are required.
Only the version 10.8 compiles with gcc 4.9. Trilinos 12.10 compiles with gcc 6.3.
I guess the gcc version in Ubuntu 16.04 is 5.3. Probably the new version of trilinos does not compile with 5.3 either.
The solution in your case is to use trilinos 10.8 and change line 622 in dae.pri file to:
Or, use a more recent compiler, if possible.
Dragan
Thanks! I tried it with gcc-7.1 and got no compilation errors.