#error“线程支持不可用:已使用BOOST_DISABLE_THREADS明确禁用它

时间:2014-04-25 07:42:54

标签: c++ multithreading ubuntu boost

我一直在破坏我的大脑,为什么我无法安装某个版本的boost。我收到错误:

failed gcc.compile.c++
bin.v2/libs/thread/build/gcc-4.8/release/debug-symbols-on/threading-multi/pt
hread/thread.o...
gcc.compile.c++
bin.v2/libs/thread/build/gcc-4.8/release/debug-symbols-on/threading-multi/pt
hread/once.o
In file included from ./boost/thread/detail/platform.hpp:17:0,
                 from ./boost/thread/once.hpp:12,
                 from libs/thread/src/pthread/once.cpp:7:
./boost/config/requires_threads.hpp:29:4: error: #error "Threading support
unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS"
#  error "Threading support unavaliable: it has been explicitly disabled
with BOOST_DISABLE_THREADS"
    ^

    "g++"  -ftemplate-depth-128 -O3 -finline-functions -Wno-inline -Wall
-pedantic -g -pthread -fPIC -Wno-long-long -DBOOST_ALL_NO_LIB=1
-DBOOST_THREAD_BUILD_DLL=1 -DBOOST_THREAD_POSIX -DNDEBUG  -I"." -c -o
"bin.v2/libs/thread/build/gcc-4.8/release/debug-symbols-on/threading-multi/p
thread/once.o" "libs/thread/src/pthread/once.cpp"

...failed gcc.compile.c++
bin.v2/libs/thread/build/gcc-4.8/release/debug-symbols-on/threading-multi/pt
hread/once.o...
...skipped

libboost_thread.so.1.48.0 for lack of

pthread/thread.o...
...skipped
libboost_thre
ad.so.1.48.0 for lack of

libboost_thread.so.1.48.0...
...skipped
libboost_thre
ad.so for lack of
libboost_thre
ad.so.1.48.0...
...failed updating 2 targets...
...skipped 3 targets...
++ '[' 1 -ne 0 ']'
++ errexit 'boost build operation failed'
++ echo 'Error building boost: boost build operation failed'
Error building boost: boost build operation failed
++ exit 1
ubuntu@ip-172-31-4-82:~/TCGA_software/GeneTorrent-3.8.5a$ cd ..
ubuntu@ip-172-31-4-82:~/TCGA_software$ /usr/local/bin/cghub/bin/gtdownload
--version
/usr/local/bin/cghub/libexec/gtdownload: error while loading shared
libraries: libboost_system.so.1.49.0: cannot open shared object file: No
such file or directory

我正在尝试安装V 1.48 - 我想安装此版本,因为CGHub生物信息学软件包GeneTorrent有自己的安装Boost(1.48)脚本,它有一些像正则表达式这样的库。我自己安装最新版本的Boost,而不是在GeneTorrent代码中使用构建脚本和打包的boost版本,导致该软件无法编译。

我在boost网站上找到了似乎是输出错误的文件:

http://www.boost.org/doc/libs/1_51_0/boost/config/requires_threads.hpp

Boost_1_48_0包确实在boost_1_48_0 / boost / config

中有此文件(requires_threads.hpp)

还有其他人遇到过这个问题吗?我正在尝试安装该软件(通过源代码,因为还没有最新的Ubuntu的版本。我确实在亚马逊ec2 Ubuntu 14实例上尝试了Ubuntu版本13而且没有骰子)。

这让我感到有点疯狂...我在这个.hpp文件的前几行中看到了我收到的错误消息(#error“Threading support unavaliable:它已被BOOST_DISABLE_THREADS显式禁用”) - I贴在下面。但是,我怎么不明确禁用它?看起来有人曾经写过一个ptach(https://svn.boost.org/trac/boost/ticket/6165),但我甚至不确定如何运行该补丁/有提升考虑(或者如果我应该相信某人的随机补丁!)< / p>

该文件还声明它仅检查到GCC 3.3 - 不确定这是否有所不同。

#ifndef BOOST_CONFIG_REQUIRES_THREADS_HPP
#define BOOST_CONFIG_REQUIRES_THREADS_HPP

#ifndef BOOST_CONFIG_HPP
#  include <boost/config.hpp>
#endif

#if defined(BOOST_DISABLE_THREADS)

//
// special case to handle versions of gcc which don't currently support threads:
//
#if defined(__GNUC__) && ((__GNUC__ < 3) || (__GNUC_MINOR__ <= 3) || !defined(BOOST_STRICT_CONFIG))
//
// this is checked up to gcc 3.3:
//
#if defined(__sgi) || defined(__hpux)
#  error "Multi-threaded programs are not supported by gcc on HPUX or Irix (last checked with gcc 3.3)"
#endif

#endif

#  error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS" 

1 个答案:

答案 0 :(得分:2)

您遇到的问题似乎与here所描述的问题相同。提供的解决方案,使用libstdcpp3.hpp.patch中的补丁ticket 6165为我工作,使用gcc 4.7.3和boost 1.48.0