ne comstack pas si boost / thread est inclus dans Linux Ubuntu:) 10.10

Je travaille dans eclipse sous Linux UBUNTU 🙂 10.10, a installé les paquets boost-dev 1.40 en utilisant le gestionnaire de paquets Synaptic. Je suis nouveau sur Linux et ce pkg boost. J’essaie de créer un nouveau projet et écris:

#include  int main(int argc, char* argv[]){ } 

Je n’ai rien inclus ou écrit quelque chose comme pthread n’importe où. en essayant de construire, il dit:

 /usr/include/boost/config/requires_threads.hpp:47: error: #error "Comstackr 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" 

et ainsi de suite, beaucoup plus d’erreurs liées à stimuler. J’ai essayé d’append -pthread , -pthreads , -lpthread à l’endroit où je pensais pouvoir le faire, mais je n’ai pas résolu le problème. J’ai oublié de mentionner que j’essaye de construire le projet dans eclipse, je ne travaille pas dans la ligne de commande, mais j’ai également essayé g ++ -pthread main.cpp et il donne exactement la même erreur. S’il vous plaît donner une solution détaillée ou stepbystep, parce que certaines choses que vous répondez ici sont simplement chinois pour moi. Je veux juste faire fonctionner une chose simple et ne pas comprendre le problème. Ne comprends même pas ce message d’erreur, que veut-il que je fasse. essentiellement ce que j’ai fait: installez eclipse, écrivez les choses ci-dessus dans un nouveau projet, installez libboost 1.4 en utilisant sinaptic pkg manager, et redémarrez tout et essayez de comstackr. J’ai eu l’erreur. Ne vois pas ce qui se passe ou ce qui me manque. (J’ai libc-dev) Stack est vraiment en train de circuler maintenant. besoin de sumil pour se calmer. merci les gars pour l’aide!

Le problème est bien connu d’une ancienne version de boost. Vous comstackz avec gcc / g ++ 4.7, où la référence aux pthreads est passée à GLIBCXX_HAS_GTHREADS, donc le boost est incapable de trouver pthreads et de le désactiver.

Donc, vous avez deux options:

1) Mettre à niveau boost_dev vers la dernière version (je pense qu’il a été corrigé dans la version 1.50+).

2) Corrigez vos fichiers d’inclusion (je l’ai fait); éditer juste

“votre dossier boost” /include/config/stdlib/libstdcpp3.hpp

et changer:

 #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 

append la nouvelle directive dans la condition:

 #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 

Description du bogue et corrections pour linux et windows ici:

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

Prendre plaisir.

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

Comstackz avec g++ test.cpp -pthread -lboost_thread .

Vous devez installer les bibliothèques de threads boost:

 sudo apt-get install libboost-thread-dev 

Comme le message d’erreur dit: pass -pthread au compilateur:

 g++ -pthread yourfile.cpp 

En outre, pour Debian, assurez-vous que libc-dev installé.