IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

POSIX C Discussion :

pthread(...) sous linux ( erreur de compilation )


Sujet :

POSIX C

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 145
    Points : 59
    Points
    59
    Par défaut [résolu] pthread(...) sous linux ( erreur de compilation )
    SAlut à tous

    j'ai un probleme un peu bizarre, et j'arrive pas a comprendre pourquoi ...
    voila le truc, j'essai de crée des threads, je bosse sous KDE, j'utilise donc la classe pthread : voila une parti du prog

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    #include <pthread.h>
    #include <stdio.h>
     
    int main ()
    {
     
     pthread_t MaThread;
     pthread_create(&MaThread,NULL,MaFonction,NULL);
     
     ....
    }
    Voila lorsque je compile :
    gcc -o MonProg MonProg.c

    j'ai l'erreur suivante :
    " undefined reference to 'pthread_create' "

    Ce qui n'est pas logique ( pr le moment lol ), car le compilateur a bien reperé la classe ( donc l'include ), puisqu'elle a crée l'objet avec la classe 'pthread', l'orthographe etant bonne, je ne comprend pas pourquoi le compilateur ne trouve pas la fonction 'pthread_create' ...

    Si vous pouvez m'eclairé
    Merci d'avance

  2. #2
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Bonjour,

    C'est tout simple. Il faut linker avec la librairie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    gcc -o MonProg MonProg.c -lpthread

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    145
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 145
    Points : 59
    Points
    59
    Par défaut
    Pt1 je t'aime toi tu c ...
    1H que je poirrote sur ce probleme, pourquoi sur aucun exemple c marqué, pe pas le deviné moi !!

    Tu peut m'expliquer le fonctionnement de la compilation avec librairie, et au passage ou se trouve le fichier pthread.h sur le disque dur.

    MErci beaucoup

  4. #4
    Membre expérimenté
    Avatar de nyal
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    622
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Septembre 2002
    Messages : 622
    Points : 1 428
    Points
    1 428
    Par défaut
    Citation Envoyé par Mike91
    Tu peut m'expliquer le fonctionnement de la compilation avec librairie
    Il faut bien connaitre les fonctions que tu veux utiliser. Elles sont stockés dans des librairies dynamiques. C'est un petit peu compliqué le fonctionnement d'un compilateur.
    Ce que tu as savoir, c'est qu'il faut souvent inclure une librairie.
    Tu vas me dire : Mais les fonctions comme strcmp il me demande rien.
    C'est normal, elle est linké par defaut la librairie C.
    Tu peux faire la commande ldd sur ton executable pour voir les librairies dont a besoin ton executable.

    Citation Envoyé par Mike91
    et au passage ou se trouve le fichier pthread.h sur le disque dur.
    Il peut se trouver aux endroits suivant :
    /usr/local/include
    /usr/local/include
    /usr/pkg/include

    Mais le mieux est d'utiliser la commande locate.

  5. #5
    Responsable technique

    Avatar de Anomaly
    Homme Profil pro
    Directeur
    Inscrit en
    Juin 2003
    Messages
    10 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Directeur
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 335
    Points : 130 271
    Points
    130 271
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Mike91
    Pt1 je t'aime toi tu c ...
    Je le laisse apprécier...

    Citation Envoyé par Mike91
    ou se trouve le fichier pthread.h sur le disque dur.
    Pour chercher un fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    find / -name pthread.h 2>/dev/null
    Le 2>/dev/null c'est pour éviter les messages d'avertissements quand find tente d'aller dans les dossiers auxquels tu n'as pas le droit d'accéder.
    Responsable technique forum & site

    Si ce message (ou un autre) vous a aidé et/ou vous semble pertinent, votez pour lui avec

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Performance de pthread sous linux
    Par uriotcea dans le forum C
    Réponses: 5
    Dernier message: 05/08/2009, 18h17
  2. Réponses: 8
    Dernier message: 27/04/2009, 12h27
  3. Réponses: 3
    Dernier message: 25/06/2008, 16h49
  4. [linux]erreur de compilation avec eclipse
    Par Asmod_D dans le forum Ogre
    Réponses: 4
    Dernier message: 26/08/2007, 21h29
  5. [mono] Compilation sous linux, erreur dans windows
    Par AlexandreP dans le forum Mono
    Réponses: 6
    Dernier message: 18/08/2006, 19h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo