使用boost线程1.51的程序没有't构建

program with boost thread 1.51 doesn't build

本文关键字:构建 程序 线程 boost 使用      更新时间:2023-10-16

我正在尝试使用最新版本的boost线程编译一个程序。我正在使用

gcc版本4.1.2 20080704(Red Hat 4.1.2-52)

对于1.50,我遇到了一个问题,说找不到对boost::thread::~thrad()的引用。所以我更新到了新的

      /usr/local/include/boost/thread/detail/thread.hpp:65: error: expected ';' before 'thread_data'
      /usr/local/include/boost/thread/detail/thread.hpp:68: error: expected `;' before 'thread_data'
      /usr/local/include/boost/thread/detail/thread.hpp:88: error: expected ';' before 'thread_data'
      /usr/local/include/boost/thread/detail/thread.hpp:91: error: expected `;' before 'void'
      /usr/local/include/boost/thread/detail/thread.hpp:105: error: expected ';' before 'thread_data'
      /usr/local/include/boost/thread/detail/thread.hpp:108: error: expected `;' before 'void'
      /usr/local/include/boost/thread/detail/thread.hpp:121: error: expected ';' before 'private'
      /usr/local/include/boost/thread/detail/thread.hpp:153: error: expected primary-expression before ')' token
      /usr/local/include/boost/thread/detail/thread.hpp:153: error: there are no arguments to 'BOOST_THREAD_RV_REF' that depend on a template parameter, so a declaration of 'BOOST_THREAD_RV_REF' must be available
      /usr/local/include/boost/thread/detail/thread.hpp:153: error: (if you use '-fpermissive', G++ will accept your code, but allowing the use of an undeclared name is deprecated)
      /usr/local/include/boost/thread/detail/thread.hpp:153: error: expected `)' before 'f'
      /usr/local/include/boost/thread/detail/thread.hpp:153: error: invalid in-class initialization of static data member of non-integral type 'boost::detail::thread_data_ptr'
      /usr/local/include/boost/thread/detail/thread.hpp:153: confused by earlier errors, bailing out

我不知道为什么要这样做。有什么变通办法吗?

我在OSX上使用g++4.2.1时遇到了同样的问题,尽管我认为这本身不是编译器问题。

我之前通过调用b2-install安装了安装到/usr/local/lib/usr/local/include的boost库和头文件。这适用于新安装,但它不会正确覆盖以前的boost安装(我有1.49)。我所要做的就是将我的构建指向我正在使用的boost构建目录,或者删除/usr/local/include/boost并再次运行b2安装。第一次我运行b2安装时,它只复制了libs,速度很快,第二次它花了更长的时间,并复制了所有的头文件。