C++ 不';如果linux Ubuntu中包含boost/thread,则无法编译:)10.10

C++ 不';如果linux Ubuntu中包含boost/thread,则无法编译:)10.10,c++,linux,boost,compiler-errors,C++,Linux,Boost,Compiler Errors,我在linux下的eclipse中工作:)10.10,使用Synaptic pkg管理器安装了boost开发包1.40。我不熟悉linux和这个boost pkg。我尝试创建一个新项目,并编写: #include <boost/thread.hpp> int main(int argc, char* argv[]){ } 等等,还有很多与boost相关的错误。 我试图将-pthread,-pthreads,-lphread添加到我认为可以添加的位置,但没有解决问题。 我忘了提到,我

我在linux下的eclipse中工作:)10.10,使用Synaptic pkg管理器安装了boost开发包1.40。我不熟悉linux和这个boost pkg。我尝试创建一个新项目,并编写:

#include <boost/thread.hpp>
int main(int argc, char* argv[]){
}
等等,还有很多与boost相关的错误。 我试图将
-pthread
-pthreads
-lphread
添加到我认为可以添加的位置,但没有解决问题。
我忘了提到,我尝试在eclipse中构建项目,我不在命令行中工作,但我也尝试了g++-pthread main.cpp,它给出了完全相同的错误。 请给出详细的或逐步的解决方案,因为你在这里回答的一些问题对我来说是简单的中文。我只是想让一个简单的东西运行起来,但我甚至不理解这个问题。我甚至不明白那个错误信息,它想让我做什么。 基本上就是我所做的:安装eclipse,在一个新项目中编写上述内容,使用sinaptic pkg管理器安装libboost 1.4,然后重新启动所有程序并尝试编译。我弄错了。不知道发生了什么,也不知道我错过了什么。(我有libc-dev)
堆栈现在真的在流动。需要一些睡眠来降温。谢谢你们的帮助

正如错误消息所说:将
-pthread
传递给编译器:

g++ -pthread yourfile.cpp
另外,对于debian,请确保已安装
libc dev

\include
#include <boost/thread.hpp>

int main(int argc, char *argv[]) {
    return 0;
}
int main(int argc,char*argv[]){ 返回0; }

使用
g++test.cpp-pthread-lboost_-thread编译

这个问题在这样一个旧版本的boost中是众所周知的。您正在使用gcc/g++4.7进行编译,其中对pthreads的引用已更改为GLIBCXX_GTHREADS,因此boost无法找到pthreads并禁用它

所以你有两个选择:

1) 将boost_dev升级到最新版本(我认为它在1.50+中已经修复)

2) 修补你的boost包含文件(我已经做了);编辑

“您的boost文件夹”/include/config/stdlib/libstdcpp3.hpp

和变化:

#ifdef __GLIBCXX__ // gcc 3.4 and greater:
#  if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
        || defined(_GLIBCXX__PTHREADS)
      //
      // If the std lib has thread support turned on, then turn it on in Boost
      // as well.  We do this because some gcc-3.4 std lib headers define _REENTANT
      // while others do not... 
      //
#     define BOOST_HAS_THREADS
#  else
#     define BOOST_DISABLE_THREADS
#  endif
要在条件中添加新指令,请执行以下操作:

#ifdef __GLIBCXX__ // gcc 3.4 and greater:
#  if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
        || defined(_GLIBCXX__PTHREADS) \
        || defined(_GLIBCXX_HAS_GTHREADS) // gcc 4.7 
      //
      // If the std lib has thread support turned on, then turn it on in Boost
      // as well.  We do this because some gcc-3.4 std lib headers define _REENTANT
      // while others do not...  
      //
#     define BOOST_HAS_THREADS
#  else
#     define BOOST_DISABLE_THREADS
#  endif
linux和windows的错误描述和修复程序如下:


享受。

您需要安装boost线程库:

sudo apt-get install libboost-thread-dev

谢谢,它尝试了这个,但是这次它给出了完全相同的消息,当然,它会将它写入终端。我在想,我怎么能在eclipse中而不是在终端上运行这个呢/usr/include/boost/config/requires_threads.hpp:47:error:#error“编译器线程支持未打开。请为线程设置正确的命令行选项:-pthread(Linux)、-pthreads(Solaris)或-mthreads(Mingw32)“我有libc-dev。还有其他提示吗?哇,这是我第一次听说Linux被称为Linux 10.10。毫无疑问,Ubuntu一定产生了一些影响。:-)对不起,我对linux和ubuntu的东西都不熟悉,但是是的,这是一个错误:)有趣的想法在你的问题中完整地展示你的编译命令行。Boost线程只是包装底层OS线程,因此通过包含Boost/thread.hpp,您就可以请求pthreads。我忘了提到,我尝试在eclipse中构建项目,我不在命令行中工作,但我也尝试了g++-pthread main.cpp,它给出了完全相同的错误。请给出详细的或逐步的解决方案,因为你在这里回答的一些问题对我来说是简单的中文。我只是想让一个简单的东西运行起来,但我甚至不理解这个问题。我甚至不理解那个错误消息,它想让我做什么。基本上我做了什么:安装eclipse,在一个新项目中编写上述内容,使用sinapticpkgmanager安装libboost1.4,重新启动所有内容并编译。怎么了?你的包裹一定是坏了。尝试重新安装boost和g++.Hmm。也试过了…同样的错误。我应该现在安装10.04而不是10.10吗?我自己使用10.10,我没有任何问题。我不知道是什么导致了你的。
sudo apt-get install libboost-thread-dev