0

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

gcc 版本 4.1.2 20080704(红帽 4.1.2-52)

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

      /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

我不知道为什么要这样做。有什么解决方法吗?

4

1 回答 1

2

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

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

于 2012-09-10T20:36:17.173 回答