c– 如果在Linux Ubuntu中包含boostthread,则不编译:)10.10

c– 如果在Linux Ubuntu中包含boostthread,则不编译:)10.10,第1张

概述我在Linux UBUNTU下工作eclipse 10.10,使用Synaptic pkg管理器安装了boost-dev软件包1.40.我是linux新手,这可以提升pkg.我尝试创建一个新项目,并写道:#include <boost/thread.hpp> int main(int argc, char* argv[]){ } 我没有包含任何内

我在Linux UBUNTU下工作eclipse 10.10,使用Synaptic pkg管理器安装了boost-dev软件包1.40.我是linux新手,这可以提升pkg.我尝试创建一个新项目,并写道:

#include 

我没有包含任何内容或在任何地方写任何像pthread.
在尝试构建时,它说:

/usr/include/boost/config/requires_threads.hpp:47: error: #error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (linux),-pthreads (Solaris) or -mthreads (Mingw32)"In file included from /usr/include/boost/thread/thread.hpp:12,from /usr/include/boost/thread.hpp:13,from ../main.cpp:8:/usr/include/boost/thread/detail/platform.hpp:67: error: #error "Sorry,no boost threads are available for this platform."In file included from /usr/include/boost/thread.hpp:13,from ../main.cpp:8:/usr/include/boost/thread/thread.hpp:19: error: #error "Boost threads unavailable on this platform"

等等,很多与boost相关的错误.
我试图将-pthread,-pthreads,-lpthread添加到我认为可以的位置,但没有解决问题.
我忘了提到,我尝试在eclipse中构建项目,我不在命令行中工作,但我也尝试了g -pthread main.cpp并且它给出了完全相同的错误.
请提供详细或stepbystep解决方案,因为您在这里回答的一些内容对我来说只是中文.我只是想让一个简单的东西运行,甚至不理解这个问题.甚至不理解该错误信息,它希望我做什么.
基本上我做了什么:安装eclipse,在新项目中编写上述内容,使用sinaptic pkg manager安装libboost 1.4,然后重新启动所有内容并尝试编译.我收到了错误.不要看到发生了什么,或者我错过了什么. (我有libc-dev)
Stack现在真的流了过来.需要一些睡眠才能降温.谢谢你们的帮助!最佳答案问题是一个众所周知的问题来自这样一个旧版本的提升.您正在使用gcc / g 4.7进行编译,其中对pthreads的引用已更改为GliBCXX_HAS_GTHREADS,因此boost无法找到pthread并禁用它.

所以你有两个选择:

1)将boost_dev升级到最后一个版本(我认为它已在1.50中修复).

2)修补你的提升包含文件(我已经完成了这个);只是编辑

“你的提升文件夹”/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的错误描述和修复:

https://svn.boost.org/trac/boost/ticket/6165

请享用.

总结

以上是内存溢出为你收集整理的c – 如果在Linux Ubuntu中包含boost / thread,则不编译:)10.10全部内容,希望文章能够帮你解决c – 如果在Linux Ubuntu中包含boost / thread,则不编译:)10.10所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/1048073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)