记录一个找了一天的报错!!!!
发现运行ros时,一运行订阅函数的回调函数,代码debug到spinOnce()就发生Segmentation fault 。
排查过程
一样的代码在朋友的电脑上运行无报错(给朋友电脑搭环境搭了很久呜呜),推测是电脑的库冲突或者是自定义的消息原因。
后经过简易代码验证,发现不是自定义的消息的原因。
仔细对比,发现有问题的代码编译时发出警告:
libboost_thread.so.1.58.0 needed by /opt/ros/kinetic/lib/libroscpp.so
may conflict with libboost_thread.so.1.75.0
因而可能是库冲突导致的问题。
我连接的库地址是/usr/local/lib
我装的libboost与ros自带的libboost产生了冲突
注释掉这行!!再编译无报错。运行后没出现一运行到spinOnce就出现段错误的情况,回调函数正常运行!
#link_directories(usr/local/lib)
装了多个版本的库!!一定不要粗鲁的链接库文件,要指定清楚,以防止冲突!!