项目场景:
Ubuntu18.04安装calibration_toolkit标定工具箱,相机和激光雷达联合标定。
问题描述
在编译时可能遇到的错误:
CMakeFiles/calibration_publisher.dir/nodes/calibration_publisher/calibration_publisher.cpp.o: In function `main':
/usr/local/include/opencv2/core/cvstd.inl.hpp:150: undefined reference to `cv::read(cv::FileNode const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)'
collect2: error: ld returned 1 exit status
calibration_camera_lidar/ls_calibration/calibration_camera_lidar/CMakeFiles/calibration_publisher.dir/build.make:349: recipe for target '/home/nnnn/calibration/devel/lib/calibration_camera_lidar/calibration_publisher' failed
make[2]: *** [/home/nnnn/calibration/devel/lib/calibration_camera_lidar/calibration_publisher] Error 1
CMakeFiles/Makefile2:5667: recipe for target 'calibration_camera_lidar/ls_calibration/calibration_camera_lidar/CMakeFiles/calibration_publisher.dir/all' failed
make[1]: *** [calibration_camera_lidar/ls_calibration/calibration_camera_lidar/CMakeFiles/calibration_publisher.dir/all] Error 2
make[1]: *** Waiting for unfinished jobs....
[ 97%] Built target calibrationtoolkit
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j16 -l16" failed
原因分析:
找了好久问题也没解决,最后看到一篇博客很相似的问题,按照他的教程也没解决,后来仔细看了一下他的问题,发现他是安装autowarwe编译出现该问题,而我是在安装calibration_toolkit标定工具箱出现该问题,所以出现该问题是要修改你安装的目录下的CMakeLists.txt,而不是简单地跟他一样修改一样的路径下的CMakeLists.txt.
下面是参考的博客:
https://blog.youkuaiyun.com/weixin_44570248/article/details/118463028
解决方案:
在文件夹里进入安装的目录,然后搜索CMakeLists.txt,这里会出现很多个CMakeLists.txt,我们打开src/calibration_camera_lidar/ls_calibration/calibration_camera_lidar路径下的CMakeLists.txt,如果不确定是哪个.txt,可以逐个打开看一下,有target_link_libraries(calibration_publisher说明就是该.txt
打开该CMakeLists.txt,在 target_link_libraries(calibration_publisher
${catkin_LIBRARIES} 后面添加
${openCV_LIBS} #added
编译成功