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

Linux Discussion :

PThread et Linux


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut PThread et Linux
    Bonjour a tous, voilà dans le cadre de mon projet de fin d'année de BTS, je dois mettre en place les threads une carte ColdFire sous uClinux (noyau de linux pour les systemes embarqué).
    Jusque là pas de probleme, seulement lors de la compilation de mon programme (exemple trouvé sur internet), j'obtien une erreur de type : undefined reference to `__rpc_thread_destroy'

    Je n'ai aucune idée d'ou l'erreur peut venir.

    Je developpe sous Linux Red Hat 9 avec Eclipse.

    J'espere que vous pourrez m'eclairer la dessus, merci d'avance.

    voici le-dit code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
     
     #include <stdio.h>
     #include <stdlib.h>
     #include <pthread.h>
     #include <unistd.h>    // pour sleep
     #include <stdio.h>
     #include <stdlib.h>
     #include <pthread.h>
     
     
     // mutex => MUtuelle EXclusion (permet d'éviter un accès simultané à une variable)
     static pthread_mutex_t mutex;
     static int tab[5];
     
     
     void* threadLectureTableau(void* arg)
     {
         for (int i = 0 ; i != 5 ; i++)
         {
             // blocage du mutex
             // (attente éventuelle de sa libération s'il est déjà bloqué)
             pthread_mutex_lock (&mutex);
     
             printf ("Lecture du tableau 1 : tab[%d] vaut %d\\n", i, tab[i]);
     
             // déblocage du mutex
             pthread_mutex_unlock (&mutex);
     
             sleep(1);
         }
     
         pthread_exit (0);
     }
     
     
     void* threadLectureTableau2(void* arg)
     {
         for (int i = 0 ; i != 5 ; i++)
         {
             // blocage du mutex
             // (attente éventuelle de sa libération s'il est déjà bloqué)
             pthread_mutex_lock (&mutex);
     
             printf ("Lecture du tableau 2 : tab[%d] vaut %d\\n", i, tab[i]);
     
             // déblocage du mutex
             pthread_mutex_unlock (&mutex);
     
             sleep(2);
         }
              pthread_exit (0);
     }
     
     
     void* threadEcritureTableau(void* arg)
     {
         // blocage du mutex
         // (attente éventuelle de sa libération s'il est déjà bloqué)
         pthread_mutex_lock (&mutex);
     
         for (int i = 0 ; i != 5 ; i++)
         {
             tab[i] = 2 * i;
             printf ("Ecriture du tableau : tab[%d] vaut %d\\n", i, tab[i]);
             sleep(1);
         }
     
         // déblocage du mutex
         pthread_mutex_unlock (&mutex);
     
         pthread_exit (0);
     }  
     
     int main(int argc, char *argv[])
     {
         pthread_t thread1, thread2, thread3;
         void *retour;
     
         pthread_mutex_init (&mutex, NULL);
     
         if (pthread_create (&thread1, NULL, threadEcritureTableau, NULL) < 0)
         {
             fprintf (stderr, "Impossible de créer le thread 1\\n");
             exit (1);
         }
         if (pthread_create (&thread2, NULL, threadLectureTableau, NULL) < 0)
         {
             fprintf (stderr, "Impossible de créer le thread 2\\n");
             exit (1);
         }
         if (pthread_create (&thread3, NULL, threadLectureTableau2, NULL) < 0)
         {
             fprintf (stderr, "Impossible de créer le thread 2\\n");
             exit (1);
         }
                     // le processus principale est ainsi contraint d'attendre la fin d'exécution
                     // des threads fils
         (void)pthread_join (thread1, &retour);
         (void)pthread_join (thread2, &retour);
         (void)pthread_join (thread3, &retour);
    }

  2. #2
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    au moment de la compilation, il faut linker la librairie avec -lpthread
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    make -k all 
    m68k-elf-g++ -m5307 -DCONFIG_COLDFIRE -Os -g -fomit-frame-pointer -m5307 -DCONFIG_COLDFIRE  -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED -I/home/uClinux-dist/lib/uClibc/include -I/home/uClinux-dist/lib/libm -I/home/uClinux-dist/lib/libcrypt_old -I/home/uClinux-dist -fno-builtin -msep-data -I/home/uClinux-dist//include  -fno-exceptions   -c -o thread.o thread.cpp
    m68k-elf-g++ -m5307 -DCONFIG_COLDFIRE -Os -g -fomit-frame-pointer -m5307 -DCONFIG_COLDFIRE  -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED -I/home/uClinux-dist/lib/uClibc/include -I/home/uClinux-dist/lib/libm -I/home/uClinux-dist/lib/libcrypt_old -I/home/uClinux-dist -fno-builtin -msep-data -I/home/uClinux-dist//include  -fno-exceptions -Os -g -fomit-frame-pointer -m5307 -DCONFIG_COLDFIRE  -Dlinux -D__linux__ -Dunix -D__uClinux__ -DEMBED -I/home/uClinux-dist/lib/uClibc/include -I/home/uClinux-dist/lib/libm -I/home/uClinux-dist/lib/libcrypt_old -I/home/uClinux-dist -fno-builtin -msep-data -I/home/uClinux-dist//include -Wl,-elf2flt -Wl,-move-rodata -nostartfiles /home/uClinux-dist/lib/uClibc/lib/crt0.o -L/home/uClinux-dist/lib/uClibc/. -L/home/uClinux-dist/lib/uClibc/lib -L/home/uClinux-dist/lib/libm -L/home/uClinux-dist/lib/libnet -L/home/uClinux-dist/lib/libdes -L/home/uClinux-dist/lib/libaes -L/home/uClinux-dist/lib/libpcap -L/home/uClinux-dist/lib/libssl -L/home/uClinux-dist/lib/libcrypt_old -L/home/uClinux-dist/prop/libsnapgear++ -L/home/uClinux-dist/prop/libsnapgear -L/home/uClinux-dist/lib/zlib -o thread thread.o -lpthread -lstdc++ -liberty -lc -lgcc
    thread.elf2flt: In function `main':
    /home/exe_uClinux/thread/thread.cpp:104: undefined reference to `__rpc_thread_destroy'
    collect2: ld returned 1 exit status
    make: *** [thread] Erreur 1
    make: La cible `all' n'a pas pu être refabriquée à cause d'erreurs.
    merci de ta rapide réponse mais elle est bien linker avec le lpthread....

  4. #4
    Expert confirmé
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Par défaut
    C'est laquelle la ligne qui cause ton erreur
    Rédacteur "éclectique" (XML, Cours PHP, Cours JavaScript, IRC, Web...)
    Les Règles du Forum - Mon Site Web sur DVP.com (Développement Web, PHP, (X)HTML/CSS, SQL, XML, IRC)
    je ne répondrai à aucune question technique via MP, MSN ou Skype : les Forums sont là pour ça !!! Merci de me demander avant de m'ajouter à vos contacts sinon je bloque !
    pensez à la balise [ code ] (bouton #) et au tag :resolu: (en bas)

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    c'est la ligne 104 d'apres la console de d'eclipse, et sur mon code (1er post) ca correspond a l'accolade fermé du main, autant dire que c louche

  6. #6
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2005
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2005
    Messages : 60
    Par défaut
    alors personne à de reponse a mon probleme, parceque c'est quand meme bizard d'avoir une erreur sur une accolade et j'avoue que j'ai eu beau recopier le code plusieurs fois et ca fait toujours la meme chose...

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

Discussions similaires

  1. [socket-pthread-linux]printf non executé
    Par sebatlante dans le forum C
    Réponses: 4
    Dernier message: 11/04/2011, 11h34
  2. Performance de pthread sous linux
    Par uriotcea dans le forum C
    Réponses: 5
    Dernier message: 05/08/2009, 18h17
  3. Terminer l'execution des pthreads [c/linux]
    Par Marc san dans le forum C
    Réponses: 4
    Dernier message: 26/02/2006, 22h15
  4. Réponses: 4
    Dernier message: 27/08/2003, 21h34
  5. Je ne peux établir une connexion cliente sous Linux.
    Par Anonymous dans le forum CORBA
    Réponses: 5
    Dernier message: 16/04/2002, 15h57

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