[英]boost filesystem segmentation fault in C++11 with ROS
我的CMakeLists.txt
包括
add_definitions(-std=c++11)
并使用以下警告进行编译:
/usr/bin/ld: warning: libboost_filesystem.so.1.58.0, needed by /opt/ros/kinetic/lib/libroscpp.so, may conflict with libboost_filesystem.so.1.64.0
当我运行可执行文件时,它会出现段错误。
使用gdb,我找到了原因:
Thread 1 "pg_generator" received signal SIGSEGV, Segmentation fault.
0x00007ffff762935d in boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*) () from /usr/local/boost/1.64.0/stage/lib/libboost_filesystem.so.1.64.0
似乎boost :: filesystem无法正常工作? 任何想法如何解决这一问题?
我尝试了apt-get update
以及apt-get upgrade
和重启。 (我在Ubuntu 16.04上。)
我想我也遇到了同样的问题。 经过长时间的调试,我发现我们俩都做过同样的事情:我们使用两个版本的boost构建我们的应用程序。 好吧,这是真正的问题,而不是C ++ 11和Boost之间的冲突。
由于ros使用Boost 1.58,因此我们最好在程序的其他部分使用相同的Boost。 (我使用Boost 1.60,而您使用Boost 1.64)
当程序中只有一个增强版本时,该问题将得到解决。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.