make pangolin 的时候报错
oot@sun:/home/sun/AR/orb/Pangolin-0.5/build# make
[ 1%] Building CXX object src/CMakeFiles/pangolin.dir/log/packetstream.cpp.o/home/sun/AR/orb/Pangolin-0.5/src/log/packetstream.cpp: 在函数‘void pangolin::WaitUntilPlaybackTime_us(int64_t)’中:
/home/sun/AR/orb/Pangolin-0.5/src/log/packetstream.cpp:73:5: 错误: ‘sleep_for’不是‘std::this_thread’的成员
src/CMakeFiles/pangolin.dir/build.make:254: recipe for target 'src/CMakeFiles/pangolin.dir/log/packetstream.cpp.o' failed
make[2]: *** [src/CMakeFiles/pangolin.dir/log/packetstream.cpp.o] Error 1
CMakeFiles/Makefile2:136: recipe for target 'src/CMakeFiles/pangolin.dir/all' failed
make[1]: *** [src/CMakeFiles/pangolin.dir/all] Error 2
Makefile:127: recipe for target 'all' failed
make: *** [all] Error 2
背景:为了学习c++11的多线程和lamda表达式的特性,升级了gcc(从4.4.6到4.7.1),写完thread程序编译时却发现还是遇到了一些问题。
原因:GCC没有定义这个宏:_GLIBCXX_USE_NANOSLEEP
解决办法:编译时加上选项:-D_GLIBCXX_USE_NANOSLEEP
或者:修改gcc的c++config.h文件去定义这个宏
再或者:重新安装gcc且使用选项:--enable-libstdcxx-time 。
详情:
(1)std::this_thread::sleep_for() and GCC
(2)来自Jonathan Wakely(a maintainer of the GNU C++ Standard Library (libstdc++) )的回答:
What is _GLIBCXX_USE_NANOSLEEP all about?
本文介绍了在编译pangolin过程中遇到的错误及其解决方法。主要问题是由于GCC未定义宏_GLIBCXX_USE_NANOSLEEP导致std::this_thread::sleep_for()不可用。提供了三种解决方案:编译时加-D_GLIBCXX_USE_NANOSLEEP选项;修改gcc的c++config.h文件定义该宏;重新安装gcc并使用--enable-libstdcxx-time选项。
2002

被折叠的 条评论
为什么被折叠?



