Bonjour,
J’essaye de mettre en application le programme sur les threads (début du livre) mais j’obtiens comme anomalie :
undefined reference to ‘pthread_create’ & ‘pthread_join’
J’ai GCC 4.8.2 ubuntu 12.04 et la bibliothèque’pthread.h’ est bien présente dans le repertoire /usr/include
Que dois-je faire?
Bonsoir,
Le fait que le fichier d’en-tête pthread.h soit présent dans /usr/include et mentionné dans le programme sous forme de ligne #include <pthread.h>
n’est pas suffisant, cela ne fait que promettre que les fonctions qui y sont mentionnées existent quelque part sur le système.
Il faut également indiquer à l’éditeur des liens dans quelle bibliothèque les fonctions se trouvent. La bibliothèque en question est libpthread.so, et pour l’indiquer à l’éditeur des liens, on ajoute l’option -lpthread sur la ligne de commande de gcc, ou ce qui est préférable l’option -pthread.
Vous avez intérêt à utiliser le Makefile fourni avec les exemples plutôt que compiler manuellement avec gcc, cela sera plus simple quand il faudra ajouter d’autres bibliothèques comme la librt.so.
Merci, pour la rapidité de votre réponse. Je vais essayer de mettre ça en application. Je n’ai pas vu ou se trouvent les Makefile ?
Cordialement à vous.
JG
The Linux Cross-Reference
Exploration intelligente des sources de tous les noyaux Linux. Très utile pour comparer deux versions et comprendre les évolutions d’API.
Bonjour,
J’essaye de mettre en application le programme sur les threads (début du livre) mais j’obtiens comme anomalie :
undefined reference to ‘pthread_create’ & ‘pthread_join’
J’ai GCC 4.8.2 ubuntu 12.04 et la bibliothèque’pthread.h’ est bien présente dans le repertoire /usr/include
Que dois-je faire?
Bonsoir,
Le fait que le fichier d’en-tête
pthread.h
soit présent dans /usr/include et mentionné dans le programme sous forme de ligne#include <pthread.h>
n’est pas suffisant, cela ne fait que promettre que les fonctions qui y sont mentionnées existent quelque part sur le système.
Il faut également indiquer à l’éditeur des liens dans quelle bibliothèque les fonctions se trouvent. La bibliothèque en question est
libpthread.so
, et pour l’indiquer à l’éditeur des liens, on ajoute l’option-lpthread
sur la ligne de commande degcc
, ou ce qui est préférable l’option-pthread
.Vous avez intérêt à utiliser le
Makefile
fourni avec les exemples plutôt que compiler manuellement avecgcc
, cela sera plus simple quand il faudra ajouter d’autres bibliothèques comme lalibrt.so
.Merci, pour la rapidité de votre réponse. Je vais essayer de mettre ça en application. Je n’ai pas vu ou se trouvent les Makefile ?
Cordialement à vous.
JG
Vous trouverez les fichiers
Makefile
nécessaires dans chaque répertoire de l’archive des exemples du livre ici : https://www.blaess.fr/christophe/files/livres/strsl/exemples-strsl.tar.bz2OK, merci pour l’info.
JG