编译C++工程问题出现最让痛苦的报错!!!
Makefile:140: recipe for target 'all' failed
make: *** [all] Error 2
Invoking "make -j8 -l8" failed
向上翻找日志输出,发现是yaml文件的未定义错误:
对‘vtable for YAML::BadConversion’未定义的引用
对‘YAML::detail::node_data::empty_scalar[abi[ 1%] Built target_robotis_controller_msgs_generate_messages_check_deps_StatusMsg:cxx11]()’未定义的引用
对‘YAML::BadConversion::~BadConversion()’未定义的引用
对‘YAML::detail::node_data::convert_to_map(std::shared_ptr<YAML::detail::memory_holder> const&)’未定义的引用
对‘YAML::BadConversion::~BadConversion()’未定义的引用
对‘typeinfo for YAML::BadConversion’未定义的引用
对‘typeinfo for YAML::BadConversion’未定义的引用
查找资料:vtable for YAML::BadConversion 的解决方法
发现是ubuntu版本和yaml版本不匹配的问题。本人是ubuntu18.04,然后安装上述所示参考资料,更换yaml0.5.0版本
cd yaml-cpp
mkdir build
cd build
cmake ..
make
make install
重新安装后yaml后,回到自己的工作空间,删除先前错误的build(否则会出现奇奇怪怪的错误),然后重新编译
rm -rf build/
catkin_make
编译成功!!!