zoukankan      html  css  js  c++  java
  • darknet_ros error shooting: undefined reference to `clReleaseMemObject@OPENCL_1.0'

    libkinect2_registration.so: undefined reference to `clReleaseMemObject@OPENCL_1.0'
    /home/robot/catkin_ws/devel/lib/libkinect2_registration.so: undefined reference to `clEnqueueWriteBuffer@OPENCL_1.0'
    /home/robot/catkin_ws/devel/lib/libkinect2_registration.so: undefined reference to `clReleaseDevice@OPENCL_1.2'
    /home/robot/catkin_ws/devel/lib/libkinect2_registration.so: undefined reference to `clGetPlatformInfo@OPENCL_1.0'

    https://github.com/code-iai/iai_kinect2/issues/305

    https://github.com/OpenKinect/libfreenect2/issues/775

    https://github.com/OpenKinect/libfreenect2/issues/804

    and I noticed that the solution of developer is as following:

    web address:https://github.com/OpenKinect/libfreenect2/issues/804


    OK, so this only happens with third party compilation using installed libfreenect2.so, which is why I didn't see it happen with Protonect. To reproduce, firstsudo make install libfreenect2, then cd examples; mkdir build && cd build; cmake ..; make.

    The cause of the issue is this:

    First, libfreenect2 is built with ocl-icd which provides versioned libOpenCL.so. Therefore libfreenect2.so requires versioned symbols.
    Then, when compiling an app with this libfreenect2, CUDA's libOpenCL.so will take precendence somehow and CUDA's libOpenCL.so is unversioned. So GCC would enforce versioning and report undefined references tosymbol@version. But at runtime this versioning doesn't seem to be strictly enforced.

    Still thinking about what to do with it.


    although I do not want to do this, but I did it, I changed to the libfreenect2 directory, and removed the build folder, then created a new folder named build. And do as the github tutorial of libfreenect2 requestagain,and …
    it passed the catkin_make!

    Commands list is as following:


    sudo rm -fr build/

    mkdir build && cd build

    cmake.. -DCMAKE_INSTALL_PREFIX=$HOME/freenect2

    make

    sudo make install


    Fortunately the problem was solved!

    warning: do not try to delete the related packages and do catkin_make, I have tried to remove the libkinect2_registrationpackage, and the workspace of catkin_ws can’t pass the catkin_make either.
  • 相关阅读:
    Jenkins pipeline基本结构
    接口测试框架httprunner使用自定义extentreports报告模板遇到的问题小结
    python3中扩展字典类实现用点访问属性
    python3系列五可迭代对象、迭代器和生成器
    vue.js-组件嵌套
    使用Vue-CLI3.x进行vue.js环境搭建
    python系列四反射机制
    vue.js环境搭建踩坑记
    python系列三推导式
    python系列二filter()、map()和reduce()
  • 原文地址:https://www.cnblogs.com/siahekai/p/11000791.html
Copyright © 2011-2022 走看看