[Dune] dune-2.4, cmake and installed core modules

Christian Engwer christian.engwer at uni-muenster.de
Tue May 3 23:01:50 CEST 2016


OK, I think I'm getting close and this seems to be some kind of more
general issue.

The obj file requires the following symbols:
nm -uC CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o  | grep ParameterTree::sub
                 U Dune::ParameterTree::sub(std::string const&)
                 U Dune::ParameterTree::sub(std::string const&) const
while the lib provides:
nm -C --defined-only /usr/lib/x86_64-linux-gnu/libdunecommon.a | grep ParameterTree::sub
00000000000013d0 T Dune::ParameterTree::sub(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
00000000000005d0 T Dune::ParameterTree::sub(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const
000000000000000b r Dune::ParameterTree::sub(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const::__func__

What strikes me is the std::__cxx11::basic_string parameter, where I'm
pretty sure that in my case (--std=c++14) basic_string will not be in
a sub-namespace __cxx11.

Might this be a problem of different C++ compiler versions?

Christian

On Tue, May 03, 2016 at 10:42:10PM +0200, Christian Engwer wrote:
> Here are the some log snippets...
> 
> cd /home/christi/Uni/Dune-2.4/duneuro-apps/build.default/src/meeg && /usr/bin/cmake -E cmake_link_script CMakeFiles/eeg_dg_hex_1_forward.dir/link.txt --verbose=1
> /home/christi/bin/cxxcompiler   -gdwarf-4 -Wall -O2 -fstrict-aliasing -Wstrict-aliasing=2 -Wno-overloaded-virtual  -std=c++14    -pthread CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o  -o eeg_dg_hex_1_forward -rdynamic /usr/lib/x86_64-linux-gnu/libdunepdelab.a /home/christi/Uni/Dune-2.4/dune-alugrid/build.default/lib/libdunealugrid.a /usr/lib/x86_64-linux-gnu/libdunegrid.a /usr/lib/x86_64-linux-gnu/libdunegeometry.a /usr/lib/x86_64-linux-gnu/libdunecommon.a /usr/lib/x86_64-linux-gnu/hdf5/serial/lib/libhdf5_cpp.so /usr/lib/x86_64-linux-gnu/hdf5/serial/lib/libhdf5.so -lpthread -lsz -lz -ldl -lm -lniftiio -lznz -lumfpack -lcholmod -lamd -lcamd -lcolamd -lccolamd -lsuitesparseconfig -lumfpack -lcholmod -lamd -lcamd -lcolamd -lccolamd -lsuitesparseconfig -lsuperlu -lblas -lparmetis -lmetis -lm -pthread /usr/lib/openmpi/lib/libmpi.so -lmetis -lm -lptscotch -lscotch -lptscotcherr -pthread /usr/lib/openmpi/lib/libmpi.so -pthread /usr/lib/openmpi/lib/libmpi.so -lz /usr/lib/x86_64-linux-gnu/libdunegrid.a -lugS2 -lugS3 -ldevS /usr/lib/x86_64-linux-gnu/libdunegeometry.a /usr/lib/x86_64-linux-gnu/libdunecommon.a -lparmetis -lmetis -lm -pthread /usr/lib/openmpi/lib/libmpi.so -lmetis -lm -lgmp -lgmpxx -llapack -lblas -pthread /usr/lib/openmpi/lib/libmpi.so -lparmetis -lmetis -lm -lptscotch -lscotch -lptscotcherr -lugS2 -lugS3 -ldevS -lgmp -lgmpxx -llapack -lz /usr/lib/openmpi/lib/libmpi.so -Wl,-rpath,/usr/lib/x86_64-linux-gnu/hdf5/serial/lib:/usr/lib/openmpi/lib
> /usr/lib/x86_64-linux-gnu/libdunegrid.a(libdgfparser_la-dgfparser.o): In function `Dune::DuneGridFormatParser::generateSimplexGrid(std::istream&)':
> (.text+0x3ace): warning: the use of `tmpnam' is dangerous, better use `mkstemp'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `duneuro::add_parameter_tree_to_data_tree(Dune::ParameterTree const&, duneuro::DataTree)':
> /home/christi/Uni/Dune-2.4/duneuro/duneuro/io/data_tree.hh:242: undefined reference to `Dune::ParameterTree::getValueKeys() const'
> /home/christi/Uni/Dune-2.4/duneuro/duneuro/io/data_tree.hh:243: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> /home/christi/Uni/Dune-2.4/duneuro/duneuro/io/data_tree.hh:245: undefined reference to `Dune::ParameterTree::getSubKeys() const'
> /home/christi/Uni/Dune-2.4/duneuro/duneuro/io/data_tree.hh:246: undefined reference to `Dune::ParameterTree::sub(std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `run(Dune::ParameterTree&)':
> /home/christi/Uni/Dune-2.4/duneuro-apps/src/meeg/eeg_conforming_forward.cc:86: undefined reference to `Dune::ParameterTree::sub(std::string const&)'
> /home/christi/Uni/Dune-2.4/duneuro-apps/src/meeg/eeg_conforming_forward.cc:97: undefined reference to `Dune::ParameterTree::sub(std::string const&)'
> /home/christi/Uni/Dune-2.4/duneuro-apps/src/meeg/eeg_conforming_forward.cc:108: undefined reference to `Dune::ParameterTree::sub(std::string const&)'
> /home/christi/Uni/Dune-2.4/duneuro-apps/src/meeg/eeg_conforming_forward.cc:120: undefined reference to `Dune::ParameterTree::sub(std::string const&)'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `run(int, char**)':
> /home/christi/Uni/Dune-2.4/duneuro-apps/src/meeg/eeg_conforming_forward.cc:172: undefined reference to `Dune::ParameterTreeParser::readINITree(std::string, Dune::ParameterTree&, bool)'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `bool Dune::ParameterTree::get<bool>(std::string const&) const':
> /usr/include/dune/common/parametertree.hh:172: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> /usr/include/dune/common/parametertree.hh:176: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> /usr/include/dune/common/parametertree.hh:180: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `std::string Dune::ParameterTree::get<std::string>(std::string const&) const':
> /usr/include/dune/common/parametertree.hh:172: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> /usr/include/dune/common/parametertree.hh:176: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `Dune::ParameterTree::Parser<std::string>::parse(std::string const&)':
> /usr/include/dune/common/parametertree.hh:269: undefined reference to `Dune::ParameterTree::rtrim(std::string const&)'
> /usr/include/dune/common/parametertree.hh:269: undefined reference to `Dune::ParameterTree::ltrim(std::string const&)'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `std::string Dune::ParameterTree::get<std::string>(std::string const&) const':
> /usr/include/dune/common/parametertree.hh:180: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `unsigned int Dune::ParameterTree::get<unsigned int>(std::string const&) const':
> /usr/include/dune/common/parametertree.hh:172: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> /usr/include/dune/common/parametertree.hh:176: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> /usr/include/dune/common/parametertree.hh:180: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `double Dune::ParameterTree::get<double>(std::string const&) const':
> /usr/include/dune/common/parametertree.hh:172: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> /usr/include/dune/common/parametertree.hh:176: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> /usr/include/dune/common/parametertree.hh:180: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `int Dune::ParameterTree::get<int>(std::string const&) const':
> /usr/include/dune/common/parametertree.hh:172: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> /usr/include/dune/common/parametertree.hh:176: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> /usr/include/dune/common/parametertree.hh:180: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `get<int>':
> /usr/include/dune/common/parametertree.hh:156: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `get<bool>':
> /usr/include/dune/common/parametertree.hh:156: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `unsigned long Dune::ParameterTree::get<unsigned long>(std::string const&) const':
> /usr/include/dune/common/parametertree.hh:172: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> /usr/include/dune/common/parametertree.hh:176: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> /usr/include/dune/common/parametertree.hh:180: undefined reference to `Dune::ParameterTree::operator[](std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `get<int>':
> /usr/include/dune/common/parametertree.hh:156: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> /usr/include/dune/common/parametertree.hh:156: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `get<bool>':
> /usr/include/dune/common/parametertree.hh:156: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `get<long unsigned int>':
> /usr/include/dune/common/parametertree.hh:156: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `get<int>':
> /usr/include/dune/common/parametertree.hh:156: undefined reference to `Dune::ParameterTree::hasKey(std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `duneuro::DGSolver<duneuro::VolumeConductor<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1, Dune::ALUGridMPIComm> >, (duneuro::ElementType)0, 1u, double, double, double>::DGSolver(std::shared_ptr<duneuro::VolumeConductor<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1, Dune::ALUGridMPIComm> > >, Dune::ParameterTree const&, duneuro::DataTree)':
> /home/christi/Uni/Dune-2.4/duneuro/duneuro/common/dg_solver.hh:72: undefined reference to `Dune::ParameterTree::sub(std::string const&) const'
> /home/christi/Uni/Dune-2.4/duneuro/duneuro/common/dg_solver.hh:79: undefined reference to `Dune::ParameterTree::sub(std::string const&) const'
> /home/christi/Uni/Dune-2.4/duneuro/duneuro/common/dg_solver.hh:81: undefined reference to `Dune::ParameterTree::sub(std::string const&) const'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `Dune::VTKWriter<Dune::GridView<Dune::ALU3dLeafGridViewTraits<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1, Dune::ALUGridMPIComm> const, (Dune::PartitionIteratorType)4> > >::pwrite(std::string const&, std::string const&, std::string const&, Dune::VTK::OutputType, int, int)':
> /usr/include/dune/grid/io/file/vtk/vtkwriter.hh:927: undefined reference to `Dune::concatPaths(std::string const&, std::string const&)'
> /usr/include/dune/grid/io/file/vtk/vtkwriter.hh:928: undefined reference to `Dune::relativePath(std::string const&, std::string const&)'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `Dune::VTKWriter<Dune::GridView<Dune::ALU3dLeafGridViewTraits<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1, Dune::ALUGridMPIComm> const, (Dune::PartitionIteratorType)4> > >::getSerialPieceName(std::string const&, std::string const&) const':
> /usr/include/dune/grid/io/file/vtk/vtkwriter.hh:837: undefined reference to `Dune::concatPaths(std::string const&, std::string const&)'
> CMakeFiles/eeg_dg_hex_1_forward.dir/eeg_conforming_forward.cc.o: In function `duneuro::ConformingEEGForwardSolver<duneuro::DGSolver<duneuro::VolumeConductor<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1, Dune::ALUGridMPIComm> >, (duneuro::ElementType)0, 1u, double, double, double>, duneuro::DGSourceModelFactory>::ConformingEEGForwardSolver(std::shared_ptr<duneuro::VolumeConductor<Dune::ALUGrid<3, 3, (Dune::ALUGridElementType)1, (Dune::ALUGridRefinementType)1, Dune::ALUGridMPIComm> > >, Dune::ParameterTree const&)':
> /home/christi/Uni/Dune-2.4/duneuro/duneuro/eeg/conforming_eeg_forward_solver.hh:38: undefined reference to `Dune::ParameterTree::sub(std::string const&) const'
> collect2: error: ld returned 1 exit status
> 
> On Tue, May 03, 2016 at 10:31:58PM +0200, Christian Engwer wrote:
> > On Tue, May 03, 2016 at 10:18:44PM +0200, Ansgar Burchardt wrote:
> > > Hi,
> > > 
> > > Christian Engwer writes:
> > > > does anybody have experience with installed modules? I tried using my
> > > > modules with installed (debian packages) core modules. This horribly
> > > > failed due to missing symbols.
> > > >
> > > > Is this a known issue? Is there a quick-fix?
> > > 
> > > Did you build your modules against the packages provided by Debian or
> > > were the binaries compiled elsewhere?
> > > 
> > > What exactly failed? Did you use any features (that require external
> > > libraries) not enabled in the Debian modules?
> > 
> > I use the Debian testing (2.4.1) dev packages:
> > ii  libdune-common-dev:amd64   2.4.1-1      amd64        toolbox for solving PDEs -- basic classes (development files)
> > ii  libdune-geometry-dev:amd64 2.4.1-1      amd64        toolbox for solving PDEs -- geometry classes (development files)
> > ii  libdune-grid-dev:amd64     2.4.1-1      amd64        toolbox for solving PDEs -- grid interface (development files)
> > ii  libdune-istl-dev           2.4.1-1      all          toolbox for solving PDEs -- iterative solvers (development files)
> > ii  libdune-localfunctions-dev 2.4.1-1      all          toolbox for solving PDEs -- local basis (development files)
> > ii  libdune-pdelab-dev:amd64   2.4.1-1      amd64        toolbox for solving PDEs -- discretization module (development files)
> > ii  libdune-typetree-dev       2.4.1-1      all          toolbox for solving PDEs -- typed tree template library (development files)
> > 
> > in addition I have dune-alugrid (branch releases/2.4) and my own
> > modules.
> > 
> > The strange thing is that the build command includes all the libraries
> > (even with the full path, which is again strange for installed
> > libs...), but I still get the linker errors.
> > 
> > Ciao
> > Christian
> > 
> > PS: I was a bit surprised that the new Debian packages include the
> >     libs in the dev package
> > 
> > _______________________________________________
> > Dune mailing list
> > Dune at dune-project.org
> > http://lists.dune-project.org/mailman/listinfo/dune
> > 
> 
> -- 
> Prof. Dr. Christian Engwer 
> Institut für Numerische und Angewandte Mathematik
> Fachbereich Mathematik und Informatik der Universität Münster
> Einsteinstrasse 62
> 48149 Münster
> 
> E-Mail  christian.engwer at uni-muenster.de
> Telefon +49 251 83-35067
> FAX     +49 251 83-32729
> 
> _______________________________________________
> Dune mailing list
> Dune at dune-project.org
> http://lists.dune-project.org/mailman/listinfo/dune

-- 
Prof. Dr. Christian Engwer 
Institut für Numerische und Angewandte Mathematik
Fachbereich Mathematik und Informatik der Universität Münster
Einsteinstrasse 62
48149 Münster

E-Mail  christian.engwer at uni-muenster.de
Telefon +49 251 83-35067
FAX     +49 251 83-32729




More information about the Dune mailing list