繁体   English   中英

使用ROS增强C ++ 11中的文件系统分段错误

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM