I have compiled deal.II 8.4.1 earlier, but version 9.0.0 gets me in a pickle.
My system is RedHat Enterprise Linux, version 7.5
I think I meet all the requirements:
$ cmake --version
cmake version 2.8.12.2
$ make --version
GNU Make 3.82
$ gcc --version
gcc (GCC) 7.2.0
I unpack the archive, creates a "build" subdirectory.
cmake runs fine, I use the following command line (split for readability):
cmake -DCMAKE_INSTALL_PREFIX=/opt/uio/modules/rhel7/packages/dealii/9.0.0\
-DP4EST_DIR=/opt/uio/modules/rhel7/packages/p4est/1.1/ \
-DDEAL_II_WITH_P4EST=ON -DDEAL_II_WITH_MPI=ON \
-DTRILINOS_DIR=/opt/uio/modules/rhel7/packages/trilinos/12.4.2/ \
..
But "make" then produces the following error:
[ 38%] Building CXX object source/sundials/CMakeFiles/obj_sundials_release.dir/arkode.cc.o
In file included from /usr/include/tbb/enumerable_thread_specific.h:32:0,
from /opt/uio/modules/src/dealii-9.0.0/include/deal.II/base/thread_local_storage.h:23,
from /opt/uio/modules/src/dealii-9.0.0/include/deal.II/base/logstream.h:22,
from /opt/uio/modules/src/dealii-9.0.0/include/deal.II/lac/vector_memory.h:22,
from /opt/uio/modules/src/dealii-9.0.0/include/deal.II/lac/lapack_full_matrix.h:24,
from /opt/uio/modules/src/dealii-9.0.0/include/deal.II/base/array_view.h:22,
from /opt/uio/modules/src/dealii-9.0.0/include/deal.II/base/mpi.h:20,
from /opt/uio/modules/src/dealii-9.0.0/include/deal.II/sundials/arkode.h:20,
from /opt/uio/modules/src/dealii-9.0.0/source/sundials/arkode.cc:17:
/usr/include/tbb/concurrent_vector.h: In member function ‘tbb::concurrent_vector<T, A>::iterator tbb::concurrent_vector<T, A>::grow_by(tbb::concurrent_vector<T, A>::size_type)’:
/usr/include/tbb/concurrent_vector.h:667:38: error: operands to ?: have different types ‘tbb::internal::concurrent_vector_base_v3::size_type {aka long unsigned int}’ and ‘tbb::atomic<long unsigned int>’
return iterator(*this, delta ? internal_grow_by( delta, sizeof(T), &initialize_array, NULL ) : my_early_size);
~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/tbb/concurrent_vector.h:667:38: note: and each type can be converted to the other
/usr/include/tbb/concurrent_vector.h: In member function ‘tbb::concurrent_vector<T, A>::iterator tbb::concurrent_vector<T, A>::grow_by(tbb::concurrent_vector<T, A>::size_type, tbb::concurrent_vector<T, A>::const_reference)’:
/usr/include/tbb/concurrent_vector.h:680:38: error: operands to ?: have different types ‘tbb::internal::concurrent_vector_base_v3::size_type {aka long unsigned int}’ and ‘tbb::atomic<long unsigned int>’
return iterator(*this, delta ? internal_grow_by( delta, sizeof(T), &initialize_array_by, static_cast<const void*>(&t) ) : my_early_size);
~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/tbb/concurrent_vector.h:680:38: note: and each type can be converted to the other
make[2]: *** [source/sundials/CMakeFiles/obj_sundials_release.dir/arkode.cc.o] Error 1
make[1]: *** [source/sundials/CMakeFiles/obj_sundials_release.dir/all] Error 2
Apparently an error in the system file concurrent_vector.h, or perhaps some
inconsistency with expected types? (I'm not a c++ programmer)
I can find the corresponding package file:
$ rpm -qf /usr/include/tbb/concurrent_vector.h
tbb-devel-4.1-9.20130314.el7.x86_64
I can force the build system to use the tbb that's bundled with the deal.ii
sources by uninstalling tbb-devel (and OCE-devel by dependency), but it
seems a harsh cure.
Still, doing that, I can move on. Next problem:
[ 92%] Building CXX object examples/CMakeFiles/step-13.release.dir/step-13/step-13.cc.o
Linking CXX executable ../bin/step-10.release
../lib/libdeal_II.so.9.0.0: error: undefined reference to 'Ifpack::Create(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Epetra_RowMatrix*, int, bool)'
../lib/libdeal_II.so.9.0.0: error: undefined reference to 'ML_Epetra::SetDefaults(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, Teuchos::ParameterList&, int*, double*, bool)'
../lib/libdeal_II.so.9.0.0: error: undefined reference to 'Epetra_Object::ReportError(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int) const'
../lib/libdeal_II.so.9.0.0: error: undefined reference to 'Teuchos::mpiErrorCodeToString[abi:cxx11](int)'
../lib/libdeal_II.so.9.0.0: error: undefined reference to 'MueLu::Level::DeclareInput(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, MueLu::FactoryBase const*, MueLu::FactoryBase const*)'
../lib/libdeal_II.so.9.0.0: error: undefined reference to 'Teuchos::StrUtils::printLines(std::ostream&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
etc etc ad nauseam
This seems trilinos-related, but I have no idea how to go on from here.
I googled a bit, but found no workable suggestions.
I have trilinos 12.4.2 (as seen in the cmake command), it worked fine with
deal.ii 8.4., and is apparently within the required version range.
Any suggestions on how to resolve this? I'll be happy to try out
things and supply more sample output, if needed.
Regards,
Hans Peter Verne
IT staff - Dept. of Geosciences
University of Oslo