编译darknet_ros报错 error "OpenCV 4.x+ requires enabled C++11 support"

在编译darknet_ros报错 error "OpenCV 4.x+ requires enabled C++11 support",请问这种怎么解决亚

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这篇文章:./darknet: error while loading shared libraries: libopencv_highgui.so.3.4: cannot open shared object 也许能够解决你的问题,你可以看下
  • 除此之外, 这篇博客: Ubuntu安装opencv4(c++)遇到的问题及解决方法中的 问题三 各种未定义的引用 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    例如

    [ 67%] Built target opencv_test_features2d
    [ 67%] Building CXX object modules/core/CMakeFiles/opencv_test_core.dir/test/test_logtagconfigparser.cpp.o
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_spawn_async_with_fds’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_utf8_validate_len’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_source_set_dispose_function’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_ref_count_dec’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_unix_get_passwd_entry’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_uri_join’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_uri_split_with_user’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_canonicalize_filename’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_uri_split_network’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_uri_is_valid’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_file_set_contents_full’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_ptr_array_steal’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_atomic_ref_count_init’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_atomic_ref_count_dec’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_ref_count_init’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_atomic_ref_count_inc’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_memdup2’未定义的引用
    /home/xxy/anaconda3/lib/libgio-2.0.so.0:对‘g_ref_count_inc’未定义的引用
    collect2: error: ld returned 1 exit status
    modules/videoio/CMakeFiles/opencv_test_videoio.dir/build.make:237: recipe for target 'bin/opencv_test_videoio' failed
    make[2]: *** [bin/opencv_test_videoio] Error 1
    CMakeFiles/Makefile2:2613: recipe for target 'modules/videoio/CMakeFiles/opencv_test_videoio.dir/all' failed
    make[1]: *** [modules/videoio/CMakeFiles/opencv_test_videoio.dir/all] Error 2
    [ 67%] Building CXX object modules/imgproc/CMakeFiles/opencv_test_imgproc.dir/test/test_connectedcomponents.cpp.o
    

    大多数情况是因为Anaconda中的部分库冲突。
    解决办法:

    • 屏蔽anaconda文件夹。将anaconda重命名为其他,如anaconda.bak
    • 同时保证.bashrc里面屏蔽anaconda

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^

这个错误可能是由于OpenCV版本过低导致的,需要更新OpenCV版本,使其支持C++11,具体步骤如下:

  1. 安装依赖:sudo apt-get install build-essential cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
  2. 下载OpenCV源码:git clone https://github.com/opencv/opencv.git
  3. 进入OpenCV源码目录:cd opencv
  4. 创建build目录:mkdir build
  5. 进入build目录:cd build
  6. 生成Makefile:cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local ..
  7. 编译:make -j4
  8. 安装:sudo make install