Autoware1.14编译报错解决方法
1 有关于calibration_publisher的错误
--- stderr: calibration_publisher
CMakeFiles/calibration_publisher.dir/src/calibration_publisher.cpp.o: In function `main':
calibration_publisher.cpp:(.text.startup+0x9b4): 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
解决方法:
修改文件:
/home/xxx/autoware.ai/src/autoware/utilities/calibration_publisher/CMakeLists.txt
target_link_libraries(calibration_publisher
${catkin_LIBRARIES}
${OpenCV_LIBS} # added
)
在后面加上${OpenCV_LIBS}即可;
修改文件:
/home/xxx/autoware.ai/src/autoware/utilities/calibration_publisher/package.xml
<depend>cv_bridge</depend>
<depend>image_transport</depend>
<depend>tf</depend>
<depend>libopencv-dev</depend> # added
在最后加上libopencv-dev即可;
2 lpthread报错
在编译到ros_observer时,会报错:
/usr/bin/ld: CMakeFiles/ros_observer.dir/src/ros_observer.cpp.o: undefined reference to symbol ‘pthread_mutexattr_settype@@GLIBC_2.2.5’
//lib/x86_64-linux-gnu/libpthread.so.0: error adding symbols: DSO missing from command line
解决方法:
打开autoware/common/ros_observer/CMakeLists.txt,在所有的target_link_libraries中,加入libpthread.so.0,再编译即可通过,如图:
3 google::protobuf::internel报错
这个感觉就是protobuf的版本问题,我当时没有解决,但个人认为就是这个问题,然后后面因为一些意外重装系统就没遇到过这个问题了,最后发现是protobuf版本的问题;
运行以下命令查看protobuf的版本,必须要3.0.0版本:
protoc --version