Pthread sous Linux ... Ouiiiin...

Résolu
cs_Defaite Messages postés 60 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 10 mai 2007 - 23 avril 2007 à 17:51
cs_Defaite Messages postés 60 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 10 mai 2007 - 24 avril 2007 à 21:37
Bonjour à tous.

Je suis actuellement sous WinXP et Ubuntu 6.10 et j'utilise Code::blocks pour developper un programme multi-threads. Ce programme marche bien sous XP grace au pthread mais impossible de le faire fonctionner sous Ubuntu...

Les erreurs varient des que je change un peu de code mais ce qu'il faut savoir, c'est que j'ai rien installé sur Ubuntu comparé à Windows où il faut mettre tout un tas de fichiers (.lib, .a et .dll)

Voila, si quelqu'un à une idée, je le remercie par avance :)

Defaite
"Remember are brothers...Everything is possible."

9 réponses

cs_Defaite Messages postés 60 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 10 mai 2007
24 avril 2007 à 11:22
C'est bon, j'ai trouvé.

En fait, sous Code::Blocks, il faut linker la ligne -lpthread.
Voici comment faire :

- Aller dans " Project " puis " Build Options "
- Dans la nouvelle fenêtre, il faut cliquer sur le nom du projet dans la liste de gauche (tout en haut) puis selectionner " Linker " ou " Linker settings " ca depend (à droite).
- Pour Windows, il fallait ajouter les .lib et .a dans le menu de gauche alors que pour Linux (Ubuntu), il faut ajouter la ligne suivante dans la partie droite :
-lpthread
- Valider et compiler

Merci Xenul et DeathCrash pour vos lumières.

<hr />Defaite - "Remember are brothers...Everything is possible."
-[ Defaite.fr ]
<hr />
3
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
24 avril 2007 à 21:35
arf vi, je pensait que tu l'avais déjà fait ca xD
Pour linux, tu peux aussi ajouter la lib comme pour w$ sous c::b ^^
3
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
23 avril 2007 à 19:38
Pour tout ce qui est thread tu dois aussi avoir la lib posix sous les systemes Unix, vérifie quel est bien installé est que tes var d'environnement de ton compilo pointe bien sur le dossier lib.

Shell
0
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
23 avril 2007 à 22:58
Cado : http://math.arizona.edu/~swig/documentation/pthreads/ , normalement sous ubuntu les lib pthread sont déjà installé, ou alors mon inconscient l'a fait xD
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_Defaite Messages postés 60 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 10 mai 2007
24 avril 2007 à 09:35
Merci pour vos réponses.

Dans mes paquets installés, j'ai bien libpthread20 mais pas libpthread-dev. Lorsque je veux l'installer, par un apt-get ou synaptic, il me dit que "/usr/include/pthread.h" appartient aussi au paquet libc6-dev...

Bon, de toute manière, j'ai bien les entetes. Pour les libs c'est autre chose, savez-vous où elles se trouvent ?

Defaite "Remember are brothers...Everything is possible."
0
cs_Defaite Messages postés 60 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 10 mai 2007
24 avril 2007 à 09:40
Pour info :

- J'ai bien "libpthread.a" dans "/usr/lib"
Si ca peut aider...

-------------
Defaite
"Remember are brothers...Everything is possible."
0
Xenul Messages postés 35 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 28 octobre 2007
24 avril 2007 à 09:47
la libpthread.a sert lors de la compilation, cependant il faut le pthread.h dans les sources, donc si tu l'a pas (locate pthread.h dans un terminal), installe la libc6-dev etc, mais je pense que l'as ^^ : "il me dit que "/usr/include/pthread.h" appartient aussi au paquet libc6-dev"
0
cs_Defaite Messages postés 60 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 10 mai 2007
24 avril 2007 à 09:57
Ouai, je l'ai bien dans "/usr/include"

Faut il que je declare les libs dans Code::blocks ? (dans "linker" ) Et si oui, lequelles ?
J'ai trouvé pas mal de docs dessus, mais que pour Win, ce que j'ai fait d'ailleurs et qui marche très bien. Seulement, dans le pack de Win que j'ai dl, j'avais bien les lib...

En fait, maintenant, dans mon code j'ai bien #include (pas d'erreur sur cette ligne lors de la compilation) mais les erreurs qu'il me fait sont du aux " pthread_create " ou " pthread_join " qui sont des références indéfinies...

Defaite "Remember are brothers...Everything is possible."
0
cs_Defaite Messages postés 60 Date d'inscription jeudi 9 décembre 2004 Statut Membre Dernière intervention 10 mai 2007
24 avril 2007 à 21:37
C'est toujours bon à savoir ;)

Merci encore Xenul ;)

<hr />Defaite
0
Rejoignez-nous