我的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
当我运行可执行文件时会出现seg-faults。
使用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上。)
答案 0 :(得分:1)
我想我遇到了同样的问题。 经过长时间的调试,我发现我们都做了同样的事情:我们使用两个版本的boost来构建我们的应用程序。嗯,这是真正的问题,而不是C ++ 11和boost之间的冲突。
因为ros使用boost 1.58,所以我们最好在程序的其他部分使用相同的boost。 (我使用boost 1.60并使用boost 1.64)
当程序中只有一个boost版本时,问题就会解决。