错误:提升禁用线程

时间:2011-11-28 14:53:59

标签: 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" 

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

 g++47 -O3 -Wall -std=c++0x   -I. -Iinclude -I../include -I/usr/local/include   -c -o     Application.o src/Application.cpp

谢谢

2 个答案:

答案 0 :(得分:44)

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

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

答案 1 :(得分:8)

见Joachim上面提到的票6165
要定义'线程'支持,

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

另一个可能阻止Boost使用现代编译器的问题是故障6940TIME_UTC在C11中有一个特殊的平均值,因此Boost&gt; = 1.50使用TIME_UTC_代替<) / p>