错误:提升禁用线程

iya*_*sar 33 c++ boost freebsd

我的升级库有问题.即时通讯使用freebsd并使用端口安装我的提升.Boost版本是:1.45,我使用g ++ 47作为编译器.此外,我从来没有在那里定义过BOOST DISABLE THREADS:/usr/local/include/boost/config/user.hpp.而且我的错误确切地说是:

 /usr/local/include/boost/config/requires_threads.hpp:29:4: error: #error "Threading    support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS" 
Run Code Online (Sandbox Code Playgroud)

明确但在哪里?我的编译命令;

 g++47 -O3 -Wall -std=c++0x   -I. -Iinclude -I../include -I/usr/local/include   -c -o     Application.o src/Application.cpp
Run Code Online (Sandbox Code Playgroud)

谢谢

Som*_*ude 44

实验性GCC版本4.7禁用Boost.Threads.请参阅:https://svn.boost.org/trac/boost/ticket/6165

编辑:应该注意的是,从GCC 4.7的发布版本开始,Boost高于1.48(Boost_1_48_0仍然不能正常工作),线程再次运行.

  • GCC没有"禁用"任何东西,Boost.Threads 1.47无法正确检测编译器中的线程支持,因为Boost依赖的未记录的实现细节发生了变化.这也与实验版和发行版无关,同样适用于4.7的所有版本 (11认同)
  • 有趣的是,我有同样的问题与gcc 4.8.1和提升1.55 - 有什么解决方案,除了备份到4.7? (2认同)
  • @Mike:请参阅Joachim上面提到的票证6165:要定义'线程'支持,GCC <= 4.6定义'_GLIBCXX__PTHREADS',而GCC> = 4.7定义'_GLIBCXX_HAS_GTHREADS'.因此,为了使用比4.6更新的任何GCC编译较旧的Boost,您需要该票证中附带的补丁libstdcpp3.hpp.patch.网址:https://svn.boost.org/trac/boost/attachment/ticket/6165/libstdcpp3.hpp.patch (2认同)

DrY*_*Yak 8

请参阅Joachim上面提到的6165票:
要定义'线程'支持,

  • GCC <= 4.6定义 _GLIBCXX__PTHREADS
  • 而GCC> = 4.7定义_GLIBCXX_HAS_GTHREADS.
因此,为了使用比4.6更新的任何GCC编译较旧的Boost,您需要该票证中附带的补丁libstdcpp3.hpp.patch.

另一个也可能阻止Boost使用现代编译器的问题是6940票(TIME_UTC在C11中有一个特殊的曲折,因此使用Boost> = 1.50 TIME_UTC_)