goodrobots / maverick

UAV Autonomous Systems Management
https://goodrobots.github.io/maverick/
MIT License
173 stars 61 forks source link

Opencv build broken - tbb related? #1023

Closed fnoop closed 3 years ago

fnoop commented 3 years ago

Lots of warnings during build about TBB:

                 from /srv/maverick/var/build/opencv/modules/core/src/parallel/parallel_tbb.cpp:11:
/srv/maverick/software/tbb/include/oneapi/tbb/detail/_config.h:394:45: warning: "__TBB_CPF_BUILD" is not defined, evaluates to 0 [-Wundef]
  394 |     #define TBB_PREVIEW_FLOW_GRAPH_FEATURES __TBB_CPF_BUILD
      |                                             ^~~~~~~~~~~~~~~
/srv/maverick/software/tbb/include/oneapi/tbb/detail/_config.h:394:45: note: in definition of macro ‘TBB_PREVIEW_FLOW_GRAPH_FEATURES’
  394 |     #define TBB_PREVIEW_FLOW_GRAPH_FEATURES __TBB_CPF_BUILD
      |                                             ^~~~~~~~~~~~~~~
/srv/maverick/software/tbb/include/oneapi/tbb/flow_graph.h:153:5: note: in expansion of macro ‘__TBB_PREVIEW_FLOW_GRAPH_NODE_SET’
  153 | #if __TBB_PREVIEW_FLOW_GRAPH_NODE_SET
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Then later in build, linking fails:

[  9%] Linking CXX executable ../../bin/opencv_version
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::spawn(tbb::detail::d1::task&, tbb::detail::d1::task_group_context&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::allocate(tbb::detail::d1::small_object_pool*&, unsigned long)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::deallocate(tbb::detail::d1::small_object_pool&, void*, unsigned long, tbb::detail::d
1::execution_data const&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::initialize(tbb::detail::d1::task_arena_base&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::destroy(tbb::detail::d1::task_group_context&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::allocate(tbb::detail::d1::small_object_pool*&, unsigned long, tbb::detail::d1::execu
tion_data const&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::execute(tbb::detail::d1::task_arena_base&, tbb::detail::d1::delegate_base&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::terminate(tbb::detail::d1::task_arena_base&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::execute_and_wait(tbb::detail::d1::task&, tbb::detail::d1::task_group_context&, tbb::
detail::d1::wait_context&, tbb::detail::d1::task_group_context&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::initialize(tbb::detail::d1::task_group_context&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::is_group_execution_cancelled(tbb::detail::d1::task_group_context&)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::execution_slot(tbb::detail::d1::execution_data const*)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::max_concurrency(tbb::detail::d1::task_arena_base const*)'
/usr/bin/ld: ../../lib/libopencv_core.so.4.5.3: undefined reference to `tbb::detail::r1::notify_waiters(unsigned long)'
collect2: error: ld returned 1 exit status
make[2]: *** [apps/version/CMakeFiles/opencv_version.dir/build.make:87: bin/opencv_version] Error 1
make[1]: *** [CMakeFiles/Makefile2:18970: apps/version/CMakeFiles/opencv_version.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....

Build libopencv_core.so references tbb symbols that aren't referenced, probably because no tbb is linked in:

[bootstrap] [mav@maverick-desktopvm ~/var/build/opencv/build]$ ldd -r ./lib/libopencv_core.so.4.5.3
    linux-vdso.so.1 (0x00007fff83f08000)
    libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f4b93ded000)
    libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f4b93dca000)
    libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f4b93dae000)
    libopenblas.so.0 => /srv/maverick/software/openblas/lib/libopenblas.so.0 (0x00007f4b930a0000)
    libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007f4b92ebe000)
    libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f4b92d6d000)
    libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007f4b92d52000)
    libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f4b92b60000)
    /lib64/ld-linux-x86-64.so.2 (0x00007f4b94e31000)
    libgfortran.so.5 => /lib/x86_64-linux-gnu/libgfortran.so.5 (0x00007f4b92898000)
    libquadmath.so.0 => /lib/x86_64-linux-gnu/libquadmath.so.0 (0x00007f4b9284e000)
undefined symbol: _ZN3tbb6detail2r15spawnERNS0_2d14taskERNS2_18task_group_contextE  (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r18allocateERPNS0_2d117small_object_poolEm (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r110deallocateERNS0_2d117small_object_poolEPvmRKNS2_14execution_dataE  (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r110initializeERNS0_2d115task_arena_baseE  (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r17destroyERNS0_2d118task_group_contextE   (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r18allocateERPNS0_2d117small_object_poolEmRKNS2_14execution_dataE  (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r17executeERNS0_2d115task_arena_baseERNS2_13delegate_baseE (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r19terminateERNS0_2d115task_arena_baseE    (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r116execute_and_waitERNS0_2d14taskERNS2_18task_group_contextERNS2_12wait_contextES6_   (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r110initializeERNS0_2d118task_group_contextE   (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r128is_group_execution_cancelledERNS0_2d118task_group_contextE (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r114execution_slotEPKNS0_2d114execution_dataE  (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r115max_concurrencyEPKNS0_2d115task_arena_baseE    (./lib/libopencv_core.so.4.5.3)
undefined symbol: _ZN3tbb6detail2r114notify_waitersEm   (./lib/libopencv_core.so.4.5.3)
fnoop commented 3 years ago

Finding/using the wrong tbb: -- Found TBB (cmake): /usr/lib/x86_64-linux-gnu/libtbb.so.2