[vtkusers] Compiling VTK 6.1.0 fails with errors like "no matching function for call to 'operator new(long unsigned int, void*)'"

David Gobbi david.gobbi at gmail.com
Thu Mar 6 18:13:12 EST 2014


Hi Omid,

It's definitely not because your gcc is too old, VTK 6.1 builds just
fine even with gcc 4.2.

My best guess is that your system does not have all of the necessary
-devel packages installed.  I haven't used a redhat-based system in a
very long time, so I can't tell you exactly what devel packages you
have to install.

I suggest that you re-post your question with a subject like "I'm
trying to install VTK on system X" where "X" is the exact name of
the linux distro you are using.  That will attract attention of other
people who use the same distro.

  David


On Thu, Mar 6, 2014 at 3:57 PM, Omid <omidlink at gmail.com> wrote:
> Hello,
>
> I am trying to compile VTK 6.1.0. After configuring with
>
> ccmake .
>
> with the following configuration
>
> BUILD_DOCUMENTATION              OFF
> BUILD_EXAMPLES                   OFF
> BUILD_SHARED_LIBS                ON
> BUILD_TESTING                    OFF
> CMAKE_BUILD_TYPE                 Debug
> CMAKE_INSTALL_PREFIX             $OPT
> EXECINFO_LIB                     EXECINFO_LIB-NOTFOUND
> VTK_EXTRA_COMPILER_WARNINGS      OFF
> VTK_Group_Imaging                OFF
> VTK_Group_MPI                    OFF
> VTK_Group_Qt                     OFF
> VTK_Group_Rendering              ON
> VTK_Group_StandAlone             ON
> VTK_Group_Tk                     OFF
> VTK_Group_Views                  OFF
> VTK_Group_Web                    OFF
> VTK_SMP_IMPLEMENTATION_TYPE      Sequential
> VTK_USE_LARGE_DATA               OFF
> VTK_WRAP_JAVA                    OFF
> VTK_WRAP_PYTHON                  OFF
> VTK_WRAP_TCL                     OFF
>
> I get the following compile error upon invoking make:
>
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h:544:
> error: no type named 'difference_type' in 'struct
> std::iterator_traits<std::basic_string<char, std::char_traits<char>,
> std::allocator<char> >*>'
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h:544:
> error: no type named 'difference_type' in 'struct
> std::iterator_traits<std::basic_string<char, std::char_traits<char>,
> std::allocator<char> >*>'
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h:544:
> error: no type named 'difference_type' in 'struct
> std::iterator_traits<std::basic_string<char, std::char_traits<char>,
> std::allocator<char> >*>'
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_algobase.h:544:
> error: no type named 'difference_type' in 'struct
> std::iterator_traits<std::basic_string<char, std::char_traits<char>,
> std::allocator<char> >*>'
> In file included from
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/vector:64,
>                  from
> /panfs/storage.local/genacc/home/ok10c/software/VTK-6.1.0/Utilities/KWSys/vtksys/stl/vector:36,
>                  from
> /panfs/storage.local/genacc/home/ok10c/software/VTK-6.1.0/Utilities/KWSys/vtksys/Directory.cxx:20:
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_uninitialized.h:
> In static member function 'static _ForwardIterator
> std::__uninitialized_copy<<anonymous>
>>::uninitialized_copy(_InputIterator, _InputIterator, _ForwardIterator)
> [with _InputIterator = std::basic_string<char, std::char_traits<char>,
> std::allocator<char> >*, _ForwardIterator = std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >*, bool <anonymous> = false]':
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_uninitialized.h:117:
>   instantiated from '_ForwardIterator
> std::uninitialized_copy(_InputIterator, _InputIterator,
> _ForwardIterator) [with _InputIterator = std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >*, _ForwardIterator =
> std::basic_string<char, std::char_traits<char>, std::allocator<char> >*]'
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_uninitialized.h:257:
>   instantiated from '_ForwardIterator
> std::__uninitialized_copy_a(_InputIterator, _InputIterator,
> _ForwardIterator, std::allocator<_Tp>&) [with _InputIterator =
> std::basic_string<char, std::char_traits<char>, std::allocator<char> >*,
> _ForwardIterator = std::basic_string<char, std::char_traits<char>,
> std::allocator<char> >*, _Tp = std::basic_string<char,
> std::char_traits<char>, std::allocator<char> >]'
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_uninitialized.h:267:
>   instantiated from '_ForwardIterator
> std::__uninitialized_move_a(_InputIterator, _InputIterator,
> _ForwardIterator, _Allocator&) [with _InputIterator =
> std::basic_string<char, std::char_traits<char>, std::allocator<char> >*,
> _ForwardIterator = std::basic_string<char, std::char_traits<char>,
> std::allocator<char> >*, _Allocator =
> std::allocator<std::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >]'
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/vector.tcc:338:
>   instantiated from 'void std::vector<_Tp,
> _Alloc>::_M_insert_aux(__gnu_cxx::__normal_iterator<typename
> std::_Vector_base<_Tp, _Alloc>::_Tp_alloc_type::pointer,
> std::vector<_Tp, _Alloc> >, const _Tp&) [with _Tp =
> std::basic_string<char, std::char_traits<char>, std::allocator<char> >,
> _Alloc = std::allocator<std::basic_string<char, std::char_traits<char>,
> std::allocator<char> > >]'
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_vector.h:741:
>   instantiated from 'void std::vector<_Tp, _Alloc>::push_back(const
> _Tp&) [with _Tp = std::basic_string<char, std::char_traits<char>,
> std::allocator<char> >, _Alloc = std::allocator<std::basic_string<char,
> std::char_traits<char>, std::allocator<char> > >]'
> /panfs/storage.local/genacc/home/ok10c/software/VTK-6.1.0/Utilities/KWSys/vtksys/Directory.cxx:226:
>   instantiated from here
> /usr/lib/gcc/x86_64-redhat-linux/4.4.6/../../../../include/c++/4.4.6/bits/stl_uninitialized.h:74:
> error: no matching function for call to 'operator new(long unsigned int,
> void*)'
> <built-in>:0: note: candidates are: void* operator new(long unsigned int)
> make[2]: ***
> [Utilities/KWSys/vtksys/CMakeFiles/vtksys.dir/Directory.cxx.o] Error 1
> make[1]: *** [Utilities/KWSys/vtksys/CMakeFiles/vtksys.dir/all] Error 2
> make: *** [all] Error 2
>
> I think the reason could be that the gcc compiler is too old (4.4.6)
> and may not support some of the newer language features (like new). I
> installed the latest stable gcc (4.8.2) and tried instructing ccmake
> to use the new gcc using
>
> env CC=$(which gcc) CXX=$(which gcc) ccmake .
>
> or
>
> CC=$(which gcc) CXX=$(which gcc) ccmake .
>
> where $(which gcc) returns the path to the new gcc. But the output and
> the errors are still the same (referring to gcc 4.4.6). It looks like
> the new gcc is not picked up by ccmake. Doing a find grep, I don't
> see where the CC or CXX variable may have been set (they are not in
> the Makefile). Any help towards solving this is greatly appreciated.
>
> --
> Omid


More information about the vtkusers mailing list