davisking / dlib

A toolkit for making real world machine learning and data analysis applications in C++
http://dlib.net
Boost Software License 1.0
13.2k stars 3.34k forks source link

Failure linking dlib python bindings (missing vtable) on Raspberry Pi #1387

Closed ramonpoca closed 6 years ago

ramonpoca commented 6 years ago

Expected Behavior

Successful linking of the bindings.

Current Behavior

Error when linking with several undefined references:

undefined reference to `vtable for dlib::mfp_kernel_1_base_class<0ul>::mp_impl_T<dlib::mfp_kernel_1_base_class<0ul>::mp_null<dlib::mfp_kernel_1_base_class<0ul>::dummy> >'

Full cmake dump:

$ python setup.py install --yes USE_NEON_INSTRUCTIONS --clean
running install
running bdist_egg
running egg_info
writing dependency_links to dlib.egg-info/dependency_links.txt
writing dlib.egg-info/PKG-INFO
writing top-level names to dlib.egg-info/top_level.txt
package init file 'dlib/__init__.py' not found (or not a regular file)
reading manifest file 'dlib.egg-info/SOURCES.txt'
reading manifest template 'MANIFEST.in'
writing manifest file 'dlib.egg-info/SOURCES.txt'
installing library code to build/bdist.linux-armv7l/egg
running install_lib
running build_py
running build_ext
Removing old directory /home/pi/dlib/build/temp.linux-armv7l-3.5
Building extension for Python 3.5.3 (default, Jan 19 2017, 14:11:04) 
Invoking CMake setup: 'cmake /home/pi/dlib/tools/python -DCMAKE_LIBRARY_OUTPUT_DIRECTORY=/home/pi/dlib/build/lib.linux-armv7l-3.5 -DPYTHON_EXECUTABLE=/home/pi/.virtualenvs/cv/bin/python -DUSE_NEON_INSTRUCTIONS=yes -DCMAKE_BUILD_TYPE=Release'
-- The C compiler identification is GNU 6.3.0
-- The CXX compiler identification is GNU 6.3.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found PythonInterp: /home/pi/.virtualenvs/cv/bin/python (found version "3.5.3") 
-- Found PythonLibs: /usr/lib/arm-linux-gnueabihf/libpython3.5m.so
-- Performing Test HAS_CPP14_FLAG
-- Performing Test HAS_CPP14_FLAG - Success
-- pybind11 v2.2.2
-- Using CMake version: 3.7.2
-- Compiling dlib version: 19.13.99
-- Enabling ARM-NEON instructions
-- Looking for pthread.h
-- Looking for pthread.h - found
-- Looking for pthread_create
-- Looking for pthread_create - not found
-- Looking for pthread_create in pthreads
-- Looking for pthread_create in pthreads - not found
-- Looking for pthread_create in pthread
-- Looking for pthread_create in pthread - found
-- Found Threads: TRUE  
-- Looking for XOpenDisplay in /usr/lib/arm-linux-gnueabihf/libX11.so;/usr/lib/arm-linux-gnueabihf/libXext.so
-- Looking for XOpenDisplay in /usr/lib/arm-linux-gnueabihf/libX11.so;/usr/lib/arm-linux-gnueabihf/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/arm-linux-gnueabihf/libX11.so
-- Looking for png_create_read_struct
-- Looking for png_create_read_struct - found
-- Looking for jpeg_read_header
-- Looking for jpeg_read_header - found
-- Searching for BLAS and LAPACK
-- Searching for BLAS and LAPACK
-- Found PkgConfig: /usr/bin/pkg-config (found version "0.29") 
-- Checking for module 'cblas'
--   No package 'cblas' found
-- Checking for module 'lapack'
--   Found lapack, version 0.2.19
-- Looking for sys/types.h
-- Looking for sys/types.h - found
-- Looking for stdint.h
-- Looking for stdint.h - found
-- Looking for stddef.h
-- Looking for stddef.h - found
-- Check size of void*
-- Check size of void* - done
-- Found OpenBLAS library
-- Looking for sgetrf_single
-- Looking for sgetrf_single - found
-- Using OpenBLAS's built in LAPACK
-- Looking for cblas_ddot
-- Looking for cblas_ddot - found
-- Looking for sgesv
-- Looking for sgesv - not found
-- Looking for sgesv_
-- Looking for sgesv_ - not found
CUDA_TOOLKIT_ROOT_DIR not found or specified
-- Could NOT find CUDA (missing:  CUDA_TOOLKIT_ROOT_DIR CUDA_NVCC_EXECUTABLE CUDA_INCLUDE_DIRS CUDA_CUDART_LIBRARY) (Required is at least version "7.5")
-- Disabling CUDA support for dlib.  DLIB WILL NOT USE CUDA
-- C++11 activated.
-- Performing Test HAS_FLTO
-- Performing Test HAS_FLTO - Success
-- LTO enabled
-- Configuring done
-- Generating done
-- Build files have been written to: /home/pi/dlib/build/temp.linux-armv7l-3.5
Invoking CMake build: 'cmake --build . --config Release -- -j1'
Scanning dependencies of target dlib
[  1%] Building CXX object dlib_build/CMakeFiles/dlib.dir/base64/base64_kernel_1.cpp.o
[  2%] Building CXX object dlib_build/CMakeFiles/dlib.dir/bigint/bigint_kernel_1.cpp.o
[  3%] Building CXX object dlib_build/CMakeFiles/dlib.dir/bigint/bigint_kernel_2.cpp.o
[  4%] Building CXX object dlib_build/CMakeFiles/dlib.dir/bit_stream/bit_stream_kernel_1.cpp.o
[  5%] Building CXX object dlib_build/CMakeFiles/dlib.dir/entropy_decoder/entropy_decoder_kernel_1.cpp.o
[  7%] Building CXX object dlib_build/CMakeFiles/dlib.dir/entropy_decoder/entropy_decoder_kernel_2.cpp.o
[  8%] Building CXX object dlib_build/CMakeFiles/dlib.dir/entropy_encoder/entropy_encoder_kernel_1.cpp.o
[  9%] Building CXX object dlib_build/CMakeFiles/dlib.dir/entropy_encoder/entropy_encoder_kernel_2.cpp.o
[ 10%] Building CXX object dlib_build/CMakeFiles/dlib.dir/md5/md5_kernel_1.cpp.o
[ 11%] Building CXX object dlib_build/CMakeFiles/dlib.dir/tokenizer/tokenizer_kernel_1.cpp.o
[ 13%] Building CXX object dlib_build/CMakeFiles/dlib.dir/unicode/unicode.cpp.o
[ 14%] Building CXX object dlib_build/CMakeFiles/dlib.dir/data_io/image_dataset_metadata.cpp.o
[ 15%] Building CXX object dlib_build/CMakeFiles/dlib.dir/data_io/mnist.cpp.o
[ 16%] Building CXX object dlib_build/CMakeFiles/dlib.dir/global_optimization/global_function_search.cpp.o
In file included from /usr/include/c++/6/vector:69:0,
                 from /home/pi/dlib/dlib/global_optimization/global_function_search.h:7,
                 from /home/pi/dlib/dlib/global_optimization/global_function_search.cpp:2:
/usr/include/c++/6/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_fill_insert(std::vector<_Tp, _Alloc>::iterator, std::vector<_Tp, _Alloc>::size_type, const value_type&) [with _Tp = double; _Alloc = std::allocator<double>]’:
/usr/include/c++/6/bits/vector.tcc:449:5: 36mnote: parameter passing for argument of type ‘std::vector<double>::iterator {aka __gnu_cxx::__normal_iterator<double*, std::vector<double> >}’ will change in GCC 7.1
     36mvector<_Tp, _Alloc>::
     36m^~~~~~~~~~~~~~~~~~~
/usr/include/c++/6/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_insert_aux(std::vector<_Tp, _Alloc>::iterator, _Args&& ...) [with _Args = {std::pair<unsigned int, double>}; _Tp = std::pair<unsigned int, double>; _Alloc = std::allocator<std::pair<unsigned int, double> >]’:
/usr/include/c++/6/bits/vector.tcc:321:7: 36mnote: parameter passing for argument of type ‘std::vector<std::pair<unsigned int, double> >::iterator {aka __gnu_cxx::__normal_iterator<std::pair<unsigned int, double>*, std::vector<std::pair<unsigned int, double> > >}’ will change in GCC 7.1
       36mvector<_Tp, _Alloc>::
       36m^~~~~~~~~~~~~~~~~~~
/usr/include/c++/6/bits/vector.tcc:321:7: 36mnote: parameter passing for argument of type ‘std::vector<std::pair<unsigned int, double> >::iterator {aka __gnu_cxx::__normal_iterator<std::pair<unsigned int, double>*, std::vector<std::pair<unsigned int, double> > >}’ will change in GCC 7.1
/usr/include/c++/6/bits/vector.tcc: In function ‘typename dlib::disable_if<dlib::is_matrix<image_type> >::type dlib::assign(T&, const dlib::matrix_exp<src_exp>&) [with T = std::vector<std::pair<unsigned int, double> >; EXP = dlib::matrix_op<dlib::op_colm2<dlib::matrix<double, 0l, 1l> > >]’:
/usr/include/c++/6/bits/vector.tcc:313:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<std::pair<unsigned int, double>*, std::vector<std::pair<unsigned int, double> > >’ will change in GCC 7.1
    36m_M_insert_aux(begin() + (__position - cbegin()),
    36m^~~~~~~~~~~~~
In file included from /usr/include/c++/6/vector:64:0,
                 from /home/pi/dlib/dlib/global_optimization/global_function_search.h:7,
                 from /home/pi/dlib/dlib/global_optimization/global_function_search.cpp:2:
/usr/include/c++/6/bits/stl_vector.h: In member function ‘void dlib::svm_c_linear_dcd_trainer<K>::optimizer_state::init(const in_sample_vector_type&, const in_scalar_vector_type&, bool, bool, bool, dlib::svm_c_linear_dcd_trainer<K>::scalar_type, dlib::svm_c_linear_dcd_trainer<K>::scalar_type) [with in_sample_vector_type = dlib::matrix_op<dlib::op_std_vect_to_mat<std::vector<std::vector<std::pair<unsigned int, double> > > > >; in_scalar_vector_type = dlib::matrix_op<dlib::op_std_vect_to_mat<std::vector<double> > >; K = dlib::sparse_linear_kernel<std::vector<std::pair<unsigned int, double> > >]’:
/usr/include/c++/6/bits/stl_vector.h:1055:2: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<double*, std::vector<double> >’ will change in GCC 7.1
  36m_M_fill_insert(begin() + __offset, __n, __x);
  36m^~~~~~~~~~~~~~
[ 17%] Building CXX object dlib_build/CMakeFiles/dlib.dir/filtering/kalman_filter.cpp.o
[ 19%] Building CXX object dlib_build/CMakeFiles/dlib.dir/test_for_odr_violations.cpp.o
[ 20%] Building CXX object dlib_build/CMakeFiles/dlib.dir/svm/auto.cpp.o
[ 21%] Building CXX object dlib_build/CMakeFiles/dlib.dir/sockets/sockets_kernel_1.cpp.o
[ 22%] Building CXX object dlib_build/CMakeFiles/dlib.dir/bsp/bsp.cpp.o
In file included from /usr/include/c++/6/queue:62:0,
                 from /home/pi/dlib/dlib/bsp/bsp.h:9,
                 from /home/pi/dlib/dlib/bsp/bsp.cpp:6:
/usr/include/c++/6/bits/stl_heap.h: In function ‘void std::__push_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<dlib::impl1::thread_safe_message_queue::msg_wrap*, std::vector<dlib::impl1::thread_safe_message_queue::msg_wrap, std::allocator<dlib::impl1::thread_safe_message_queue::msg_wrap> > >; _Distance = int; _Tp = dlib::impl1::thread_safe_message_queue::msg_wrap; _Compare = __gnu_cxx::__ops::_Iter_comp_val<std::less<dlib::impl1::thread_safe_message_queue::msg_wrap> >]’:
/usr/include/c++/6/bits/stl_heap.h:124:5: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<dlib::impl1::thread_safe_message_queue::msg_wrap*, std::vector<dlib::impl1::thread_safe_message_queue::msg_wrap, std::allocator<dlib::impl1::thread_safe_message_queue::msg_wrap> > >’ will change in GCC 7.1
     36m__push_heap(_RandomAccessIterator __first,
     36m^~~~~~~~~~~
/usr/include/c++/6/bits/stl_heap.h: In function ‘void std::__adjust_heap(_RandomAccessIterator, _Distance, _Distance, _Tp, _Compare) [with _RandomAccessIterator = __gnu_cxx::__normal_iterator<dlib::impl1::thread_safe_message_queue::msg_wrap*, std::vector<dlib::impl1::thread_safe_message_queue::msg_wrap, std::allocator<dlib::impl1::thread_safe_message_queue::msg_wrap> > >; _Distance = int; _Tp = dlib::impl1::thread_safe_message_queue::msg_wrap; _Compare = __gnu_cxx::__ops::_Iter_comp_iter<std::less<dlib::impl1::thread_safe_message_queue::msg_wrap> >]’:
/usr/include/c++/6/bits/stl_heap.h:209:5: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<dlib::impl1::thread_safe_message_queue::msg_wrap*, std::vector<dlib::impl1::thread_safe_message_queue::msg_wrap, std::allocator<dlib::impl1::thread_safe_message_queue::msg_wrap> > >’ will change in GCC 7.1
     36m__adjust_heap(_RandomAccessIterator __first, _Distance __holeIndex,
     36m^~~~~~~~~~~~~
[ 23%] Building CXX object dlib_build/CMakeFiles/dlib.dir/dir_nav/dir_nav_kernel_1.cpp.o
[ 25%] Building CXX object dlib_build/CMakeFiles/dlib.dir/dir_nav/dir_nav_kernel_2.cpp.o
[ 26%] Building CXX object dlib_build/CMakeFiles/dlib.dir/dir_nav/dir_nav_extensions.cpp.o
[ 27%] Building CXX object dlib_build/CMakeFiles/dlib.dir/linker/linker_kernel_1.cpp.o
[ 28%] Building CXX object dlib_build/CMakeFiles/dlib.dir/logger/extra_logger_headers.cpp.o
[ 29%] Building CXX object dlib_build/CMakeFiles/dlib.dir/logger/logger_kernel_1.cpp.o
[ 30%] Building CXX object dlib_build/CMakeFiles/dlib.dir/logger/logger_config_file.cpp.o
[ 32%] Building CXX object dlib_build/CMakeFiles/dlib.dir/misc_api/misc_api_kernel_1.cpp.o
[ 33%] Building CXX object dlib_build/CMakeFiles/dlib.dir/misc_api/misc_api_kernel_2.cpp.o
[ 34%] Building CXX object dlib_build/CMakeFiles/dlib.dir/sockets/sockets_extensions.cpp.o
[ 35%] Building CXX object dlib_build/CMakeFiles/dlib.dir/sockets/sockets_kernel_2.cpp.o
[ 36%] Building CXX object dlib_build/CMakeFiles/dlib.dir/sockstreambuf/sockstreambuf.cpp.o
[ 38%] Building CXX object dlib_build/CMakeFiles/dlib.dir/sockstreambuf/sockstreambuf_unbuffered.cpp.o
[ 39%] Building CXX object dlib_build/CMakeFiles/dlib.dir/server/server_kernel.cpp.o
[ 40%] Building CXX object dlib_build/CMakeFiles/dlib.dir/server/server_iostream.cpp.o
[ 41%] Building CXX object dlib_build/CMakeFiles/dlib.dir/server/server_http.cpp.o
[ 42%] Building CXX object dlib_build/CMakeFiles/dlib.dir/threads/multithreaded_object_extension.cpp.o
[ 44%] Building CXX object dlib_build/CMakeFiles/dlib.dir/threads/threaded_object_extension.cpp.o
[ 45%] Building CXX object dlib_build/CMakeFiles/dlib.dir/threads/threads_kernel_1.cpp.o
[ 46%] Building CXX object dlib_build/CMakeFiles/dlib.dir/threads/threads_kernel_2.cpp.o
[ 47%] Building CXX object dlib_build/CMakeFiles/dlib.dir/threads/threads_kernel_shared.cpp.o
[ 48%] Building CXX object dlib_build/CMakeFiles/dlib.dir/threads/thread_pool_extension.cpp.o
[ 50%] Building CXX object dlib_build/CMakeFiles/dlib.dir/threads/async.cpp.o
[ 51%] Building CXX object dlib_build/CMakeFiles/dlib.dir/timer/timer.cpp.o
[ 52%] Building CXX object dlib_build/CMakeFiles/dlib.dir/stack_trace.cpp.o
[ 53%] Building CXX object dlib_build/CMakeFiles/dlib.dir/cuda/cpu_dlib.cpp.o
[ 54%] Building CXX object dlib_build/CMakeFiles/dlib.dir/cuda/tensor_tools.cpp.o
[ 55%] Building CXX object dlib_build/CMakeFiles/dlib.dir/gui_widgets/fonts.cpp.o
[ 57%] Building CXX object dlib_build/CMakeFiles/dlib.dir/gui_widgets/widgets.cpp.o
In file included from /usr/include/c++/6/vector:69:0,
                 from /home/pi/dlib/dlib/gui_widgets/widgets.h:12,
                 from /home/pi/dlib/dlib/gui_widgets/widgets.cpp:9:
/usr/include/c++/6/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_range_insert(std::vector<_Tp, _Alloc>::iterator, _ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = __gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >; _Tp = dlib::image_display::overlay_circle; _Alloc = std::allocator<dlib::image_display::overlay_circle>]’:
/usr/include/c++/6/bits/vector.tcc:616:7: 36mnote: parameter passing for argument of type ‘std::vector<dlib::image_display::overlay_circle>::iterator {aka __gnu_cxx::__normal_iterator<dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >}’ will change in GCC 7.1
       36mvector<_Tp, _Alloc>::
       36m^~~~~~~~~~~~~~~~~~~
/usr/include/c++/6/bits/vector.tcc:616:7: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >’ will change in GCC 7.1
/usr/include/c++/6/bits/vector.tcc:616:7: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >’ will change in GCC 7.1
In file included from /usr/include/c++/6/vector:64:0,
                 from /home/pi/dlib/dlib/gui_widgets/widgets.h:12,
                 from /home/pi/dlib/dlib/gui_widgets/widgets.cpp:9:
/usr/include/c++/6/bits/stl_vector.h: In member function ‘void dlib::image_display::add_overlay(const std::vector<dlib::image_display::overlay_circle>&)’:
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘std::vector<dlib::image_display::overlay_circle>::iterator {aka __gnu_cxx::__normal_iterator<dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >}’ will change in GCC 7.1
    36m_M_range_insert(__pos, __first, __last, _IterCategory());
    36m^~~~~~~~~~~~~~~
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h: In member function ‘void dlib::image_window::add_overlay(const std::vector<dlib::image_display::overlay_circle>&)’:
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘std::vector<dlib::image_display::overlay_circle>::iterator {aka __gnu_cxx::__normal_iterator<dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >}’ will change in GCC 7.1
    36m_M_range_insert(__pos, __first, __last, _IterCategory());
    36m^~~~~~~~~~~~~~~
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::image_display::overlay_circle*, std::vector<dlib::image_display::overlay_circle> >’ will change in GCC 7.1
In file included from /usr/include/c++/6/vector:69:0,
                 from /home/pi/dlib/dlib/gui_widgets/widgets.h:12,
                 from /home/pi/dlib/dlib/gui_widgets/widgets.cpp:9:
/usr/include/c++/6/bits/vector.tcc: In member function ‘void std::vector<_Tp, _Alloc>::_M_range_insert(std::vector<_Tp, _Alloc>::iterator, _ForwardIterator, _ForwardIterator, std::forward_iterator_tag) [with _ForwardIterator = __gnu_cxx::__normal_iterator<const dlib::perspective_display::overlay_line*, std::vector<dlib::perspective_display::overlay_line> >; _Tp = dlib::perspective_display::overlay_line; _Alloc = std::allocator<dlib::perspective_display::overlay_line>]’:
/usr/include/c++/6/bits/vector.tcc:616:7: 36mnote: parameter passing for argument of type ‘std::vector<dlib::perspective_display::overlay_line>::iterator {aka __gnu_cxx::__normal_iterator<dlib::perspective_display::overlay_line*, std::vector<dlib::perspective_display::overlay_line> >}’ will change in GCC 7.1
       36mvector<_Tp, _Alloc>::
       36m^~~~~~~~~~~~~~~~~~~
/usr/include/c++/6/bits/vector.tcc:616:7: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::perspective_display::overlay_line*, std::vector<dlib::perspective_display::overlay_line> >’ will change in GCC 7.1
/usr/include/c++/6/bits/vector.tcc:616:7: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::perspective_display::overlay_line*, std::vector<dlib::perspective_display::overlay_line> >’ will change in GCC 7.1
In file included from /usr/include/c++/6/vector:64:0,
                 from /home/pi/dlib/dlib/gui_widgets/widgets.h:12,
                 from /home/pi/dlib/dlib/gui_widgets/widgets.cpp:9:
/usr/include/c++/6/bits/stl_vector.h: In member function ‘void dlib::perspective_display::add_overlay(const std::vector<dlib::perspective_display::overlay_line>&)’:
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘std::vector<dlib::perspective_display::overlay_line>::iterator {aka __gnu_cxx::__normal_iterator<dlib::perspective_display::overlay_line*, std::vector<dlib::perspective_display::overlay_line> >}’ will change in GCC 7.1
    36m_M_range_insert(__pos, __first, __last, _IterCategory());
    36m^~~~~~~~~~~~~~~
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::perspective_display::overlay_line*, std::vector<dlib::perspective_display::overlay_line> >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::perspective_display::overlay_line*, std::vector<dlib::perspective_display::overlay_line> >’ will change in GCC 7.1
/usr/include/c++/6/bits/stl_vector.h:1375:4: 36mnote: parameter passing for argument of type ‘__gnu_cxx::__normal_iterator<const dlib::perspective_display::overlay_line*, std::vector<dlib::perspective_display::overlay_line> >’ will change in GCC 7.1
[ 58%] Building CXX object dlib_build/CMakeFiles/dlib.dir/gui_widgets/drawable.cpp.o
[ 59%] Building CXX object dlib_build/CMakeFiles/dlib.dir/gui_widgets/canvas_drawing.cpp.o
[ 60%] Building CXX object dlib_build/CMakeFiles/dlib.dir/gui_widgets/style.cpp.o
[ 61%] Building CXX object dlib_build/CMakeFiles/dlib.dir/gui_widgets/base_widgets.cpp.o
[ 63%] Building CXX object dlib_build/CMakeFiles/dlib.dir/gui_core/gui_core_kernel_1.cpp.o
[ 64%] Building CXX object dlib_build/CMakeFiles/dlib.dir/gui_core/gui_core_kernel_2.cpp.o
[ 65%] Building CXX object dlib_build/CMakeFiles/dlib.dir/image_loader/png_loader.cpp.o
[ 66%] Building CXX object dlib_build/CMakeFiles/dlib.dir/image_saver/save_png.cpp.o
[ 67%] Building CXX object dlib_build/CMakeFiles/dlib.dir/image_loader/jpeg_loader.cpp.o
[ 69%] Building CXX object dlib_build/CMakeFiles/dlib.dir/image_saver/save_jpeg.cpp.o
[ 70%] Linking CXX static library libdlib.a
[ 70%] Built target dlib
Scanning dependencies of target dlib_python
[ 71%] Building CXX object CMakeFiles/dlib_python.dir/src/dlib.cpp.o
[ 72%] Building CXX object CMakeFiles/dlib_python.dir/src/matrix.cpp.o
[ 73%] Building CXX object CMakeFiles/dlib_python.dir/src/vector.cpp.o
[ 75%] Building CXX object CMakeFiles/dlib_python.dir/src/svm_c_trainer.cpp.o
[ 76%] Building CXX object CMakeFiles/dlib_python.dir/src/svm_rank_trainer.cpp.o
[ 77%] Building CXX object CMakeFiles/dlib_python.dir/src/decision_functions.cpp.o
[ 78%] Building CXX object CMakeFiles/dlib_python.dir/src/other.cpp.o
[ 79%] Building CXX object CMakeFiles/dlib_python.dir/src/basic.cpp.o
[ 80%] Building CXX object CMakeFiles/dlib_python.dir/src/cca.cpp.o
[ 82%] Building CXX object CMakeFiles/dlib_python.dir/src/sequence_segmenter.cpp.o
[ 83%] Building CXX object CMakeFiles/dlib_python.dir/src/svm_struct.cpp.o
[ 84%] Building CXX object CMakeFiles/dlib_python.dir/src/image.cpp.o
[ 85%] Building CXX object CMakeFiles/dlib_python.dir/src/image2.cpp.o
[ 86%] Building CXX object CMakeFiles/dlib_python.dir/src/rectangles.cpp.o
[ 88%] Building CXX object CMakeFiles/dlib_python.dir/src/object_detection.cpp.o
[ 89%] Building CXX object CMakeFiles/dlib_python.dir/src/shape_predictor.cpp.o
[ 90%] Building CXX object CMakeFiles/dlib_python.dir/src/correlation_tracker.cpp.o
[ 91%] Building CXX object CMakeFiles/dlib_python.dir/src/face_recognition.cpp.o
[ 92%] Building CXX object CMakeFiles/dlib_python.dir/src/cnn_face_detector.cpp.o
[ 94%] Building CXX object CMakeFiles/dlib_python.dir/src/global_optimization.cpp.o
[ 95%] Building CXX object CMakeFiles/dlib_python.dir/src/image_dataset_metadata.cpp.o
[ 96%] Building CXX object CMakeFiles/dlib_python.dir/src/numpy_returns.cpp.o
[ 97%] Building CXX object CMakeFiles/dlib_python.dir/src/line.cpp.o
[ 98%] Building CXX object CMakeFiles/dlib_python.dir/src/gui.cpp.o
[100%] Linking CXX shared module /home/pi/dlib/build/lib.linux-armv7l-3.5/dlib.cpython-35m-arm-linux-gnueabihf.so
dlib_build/libdlib.a(auto.cpp.o): In function `dlib::bfp1_helpers::bound_function_helper_T<dlib::bfp1_helpers::bound_function_helper<std::pair<unsigned int, dlib::function_evaluation> dlib::impl::find_max_global<dlib::auto_train_rbf_classifier(std::vector<dlib::matrix<double, 0l, 1l, dlib::memory_manager_stateless_kernel_1<char>, dlib::row_major_layout>, std::allocator<dlib::matrix<double, 0l, 1l, dlib::memory_manager_stateless_kernel_1<char>, dlib::row_major_layout> > >, std::vector<double, std::allocator<double> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >, bool)::{lambda(double, double, double)#1}>(dlib::thread_pool&, std::vector<dlib::auto_train_rbf_classifier(std::vector<dlib::matrix<double, 0l, 1l, dlib::memory_manager_stateless_kernel_1<char>, dlib::row_major_layout>, std::allocator<dlib::matrix<double, 0l, 1l, dlib::memory_manager_stateless_kernel_1<char>, dlib::row_major_layout> > >, std::vector<double, std::allocator<double> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >, bool)::{lambda(double, double, double)#1}, std::allocator<dlib::thread_pool&> >&, std::vector<dlib::function_spec, std::allocator<std::vector<dlib::auto_train_rbf_classifier(std::vector<dlib::matrix<double, 0l, 1l, dlib::memory_manager_stateless_kernel_1<char>, dlib::row_major_layout>, std::allocator<dlib::matrix<double, 0l, 1l, dlib::memory_manager_stateless_kernel_1<char>, dlib::row_major_layout> > >, std::vector<double, std::allocator<double> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >, bool)::{lambda(double, double, double)#1}, std::allocator<dlib::thread_pool&> >&> >, dlib::max_function_calls, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >, double, double)::{lambda()#1}, void, void, void, void> >::clone(void*) const':
auto.cpp:(.text+0x4ac): undefined reference to `vtable for dlib::mfp_kernel_1_base_class<0ul>::mp_impl_T<dlib::mfp_kernel_1_base_class<0ul>::mp_null<dlib::mfp_kernel_1_base_class<0ul>::dummy> >'
dlib_build/libdlib.a(auto.cpp.o): In function `dlib::auto_train_rbf_classifier(std::vector<dlib::matrix<double, 0l, 1l, dlib::memory_manager_stateless_kernel_1<char>, dlib::row_major_layout>, std::allocator<dlib::matrix<double, 0l, 1l, dlib::memory_manager_stateless_kernel_1<char>, dlib::row_major_layout> > >, std::vector<double, std::allocator<double> >, std::chrono::duration<long long, std::ratio<1ll, 1000000000ll> >, bool)':
auto.cpp:(.text+0x1c44): undefined reference to `vtable for dlib::mfp_kernel_1_base_class<0ul>::mp_impl_T<dlib::mfp_kernel_1_base_class<0ul>::mp_null<dlib::mfp_kernel_1_base_class<0ul>::dummy> >'
dlib_build/libdlib.a(thread_pool_extension.cpp.o): In function `dlib::array<dlib::thread_pool_implementation::task_state_type, dlib::memory_manager_stateless_kernel_1<char> >::resize(unsigned int) [clone .constprop.90]':
thread_pool_extension.cpp:(.text+0x1950): undefined reference to `vtable for dlib::mfp_kernel_1_base_class<0ul>::mp_impl_T<dlib::mfp_kernel_1_base_class<0ul>::mp_null<dlib::mfp_kernel_1_base_class<0ul>::dummy> >'
dlib_build/libdlib.a(thread_pool_extension.cpp.o): In function `dlib::thread_pool_implementation::thread() [clone .constprop.87]':
thread_pool_extension.cpp:(.text+0x3d2c): undefined reference to `vtable for dlib::mfp_kernel_1_base_class<0ul>::mp_impl_T<dlib::mfp_kernel_1_base_class<0ul>::mp_null<dlib::mfp_kernel_1_base_class<0ul>::dummy> >'
dlib_build/libdlib.a(thread_pool_extension.cpp.o): In function `dlib::thread_pool_implementation::thread()':
thread_pool_extension.cpp:(.text+0x59d4): undefined reference to `vtable for dlib::mfp_kernel_1_base_class<0ul>::mp_impl_T<dlib::mfp_kernel_1_base_class<0ul>::mp_null<dlib::mfp_kernel_1_base_class<0ul>::dummy> >'
dlib_build/libdlib.a(widgets.cpp.o):widgets.cpp:(.text+0x1ab7c): more undefined references to `vtable for dlib::mfp_kernel_1_base_class<0ul>::mp_impl_T<dlib::mfp_kernel_1_base_class<0ul>::mp_null<dlib::mfp_kernel_1_base_class<0ul>::dummy> >' follow
collect2: error: ld returned 1 exit status
CMakeFiles/dlib_python.dir/build.make:702: recipe for target '/home/pi/dlib/build/lib.linux-armv7l-3.5/dlib.cpython-35m-arm-linux-gnueabihf.so' failed
make[2]: *** [/home/pi/dlib/build/lib.linux-armv7l-3.5/dlib.cpython-35m-arm-linux-gnueabihf.so] Error 1
CMakeFiles/Makefile2:67: recipe for target 'CMakeFiles/dlib_python.dir/all' failed
make[1]: *** [CMakeFiles/dlib_python.dir/all] Error 2
Makefile:83: recipe for target 'all' failed
make: *** [all] Error 2
Traceback (most recent call last):
  File "setup.py", line 257, in <module>
    'Topic :: Software Development',
  File "/home/pi/.virtualenvs/cv/lib/python3.5/site-packages/setuptools/__init__.py", line 129, in setup
    return distutils.core.setup(**attrs)
  File "/usr/lib/python3.5/distutils/core.py", line 148, in setup
    dist.run_commands()
  File "/usr/lib/python3.5/distutils/dist.py", line 955, in run_commands
    self.run_command(cmd)
  File "/usr/lib/python3.5/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/pi/.virtualenvs/cv/lib/python3.5/site-packages/setuptools/command/install.py", line 67, in run
    self.do_egg_install()
  File "/home/pi/.virtualenvs/cv/lib/python3.5/site-packages/setuptools/command/install.py", line 109, in do_egg_install
    self.run_command('bdist_egg')
  File "/usr/lib/python3.5/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.5/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/pi/.virtualenvs/cv/lib/python3.5/site-packages/setuptools/command/bdist_egg.py", line 172, in run
    cmd = self.call_command('install_lib', warn_dir=0)
  File "/home/pi/.virtualenvs/cv/lib/python3.5/site-packages/setuptools/command/bdist_egg.py", line 158, in call_command
    self.run_command(cmdname)
  File "/usr/lib/python3.5/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.5/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "/home/pi/.virtualenvs/cv/lib/python3.5/site-packages/setuptools/command/install_lib.py", line 11, in run
    self.build()
  File "/usr/lib/python3.5/distutils/command/install_lib.py", line 109, in build
    self.run_command('build_ext')
  File "/usr/lib/python3.5/distutils/cmd.py", line 313, in run_command
    self.distribution.run_command(command)
  File "/usr/lib/python3.5/distutils/dist.py", line 974, in run_command
    cmd_obj.run()
  File "setup.py", line 133, in run
    self.build_extension(ext)
  File "setup.py", line 173, in build_extension
    subprocess.check_call(cmake_build, cwd=build_folder)
  File "/usr/lib/python3.5/subprocess.py", line 271, in check_call
    raise CalledProcessError(retcode, cmd)
subprocess.CalledProcessError: Command '['cmake', '--build', '.', '--config', 'Release', '--', '-j1']' returned non-zero exit status 2

Steps to Reproduce

git clone https://github.com/davisking/dlib.git
cd dlib 
python setup.py install --yes USE_NEON_INSTRUCTIONS --clean
davisking commented 6 years ago

This seems to be a bug in the compiler. There might be a workaround, but I don't have a raspberry pi to test on so you will have to work this out yourself, or find someone to help. I would start by trying to compile the C++ example programs and see if any of them fail. Many other things use the code it's complaining about, so maybe you can get an error there as well.

ramonpoca commented 6 years ago

Yep, it's a compiler (linker) bug. I installed gcc 6.4.0 from raspbian-testing and it went like a charm.

techbehindthescenes commented 5 years ago

Hi @ramonpoca, I'm trying to install gcc 6.4.0 - where did you get it from and did you have to build it first? Thank you!

ramonpoca commented 5 years ago

I installed the testing raspbian repo.

pi@raspberrypi:~ $  cat /etc/apt/sources.list.d/testing.list
deb http://raspbian.raspberrypi.org/raspbian/ testing main contrib non-free rpi

pi@raspberrypi:~ $ cat /etc/apt/preferences.d/testing.pref
Package: *
Pin: release a=testing
Pin-Priority: 750

pi@raspberrypi:~ $ cat /etc/apt/preferences.d/stretch.pref
Package: *
Pin: release a=stretch
Pin-Priority: 900

But note that it might mess your install. Also, OpenBLAS seem to be messing around (got segfault when using face-recognition).

techbehindthescenes commented 5 years ago

Helpful, thanks @ramonpoca!!

pikapi12321 commented 5 years ago

Similar problem, solved after installing latest clang(7.0.0). Installing newer gcc should work as well, but I prefer clang ;)