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
Github
Le dépôt Github sur lequel je stocke quelques codes libres (exemples, etc.)
Formations que j'anime
Écriture de drivers pour Linux
Quatre jours pour apprendre à lire et écrire des drivers pour le kernel Linux, en maîtrisant les concepts de la programmation noyau.
Développeur Linux embarqué avec Yocto Project
Une formation de 3 jours pour appréhender l’environnement Yocto Project et un système Linux embarqué personnalisé dans lequel vous intégrerez votre propre code métier.
Yocto Project avancé
Une formation de 3 jours destinée aux développeurs pour Linux embarqué utilisant Yocto Project et souhaitant accéder à un niveau plus avancé.
Formation Yocto Cooker
Cette formation d’un jour vous permettra de maîtriser l’outil Cooker qui permet d’optimiser et simplifier la maintenance de builds Yocto Project
Linux embarqué avec Buildroot
Ces 3 jours de formation vous permettent de maîtriser l’outil Buildroot pour créer rapidement et simplement un système Linux embarqué et y intégrer votre code applicatif.
Temps réel sous Linux
Deux jours de formation pour maîtriser les concepts de Linux temps réel, connaître les solutions disponibles, leurs atouts et leurs limites.
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