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

Threads & Processus C++ Discussion :

Programme multi Threader avec Code Blocks et Fedora 14


Sujet :

Threads & Processus C++

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2009
    Messages : 86
    Par défaut Programme multi Threader avec Code Blocks et Fedora 14
    Bonjour, je débute actuellement en C++ et utilise un ide pour mon développement de logiciel c++.

    L'ide de mon choix est Code Blocks que je trouve assez pratique.

    Je me lance dans l'apprentissage des Threads & Mutex, mais n'arrive pas à en venir à bout.

    Malheureusement j'obtiens deux message d'erreur quand je décide de builder mon code, à savoir :

    - undefined reference to `pthread_create'|
    - undefined reference to `pthread_join'|

    Je tiens à préciser que j'ai fais l'inclusion dans mon projet de <pthread.h>

    Aussi je n'ai pas compris la ligne suivante du tutoriel :

    gcc nomSource.c -lpthread -o nomExecutable

    Cette ligne est au début de la section Linux.

    Je crois que c'est ce qu'il faut faire pour compiler, mais puisque je compte faire du c++ alors ce n'est pas valable, d'une, de deux le compilateur est appeler implicitement par codeblocks ...

    Auriez vous une idée, je ne sais pas quoi faire pour que soit définit pthread_create & join dans codeblocks ...

    Merci d'avance à tout ceux qui prendrons du temps pour m'aider à résoudre mon problème.

  2. #2
    Membre éclairé
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Par défaut
    Salut,

    Le message d'erreur que tu recois est du a une bibliotheque manquante.
    Ajouter <pthread.h> a ton code n'est pas suffisant. Il faut aussi que tu fournisses la bibliotheque (pthread.lib ou pthread.a) au "linker".
    Regarde dans les options de CodeBlocks tu trouveras une section pour ajouter des bibliotheques a ton projet.

  3. #3
    Membre éprouvé Avatar de alexrtz
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juin 2003
    Messages
    639
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Juin 2003
    Messages : 639
    Par défaut
    Citation Envoyé par enzo68290 Voir le message
    - undefined reference to `pthread_create'|
    - undefined reference to `pthread_join'|

    Je tiens à préciser que j'ai fais l'inclusion dans mon projet de <pthread.h>
    Imagine que tu veux écrire un texte et que pour ça tu as besoin d'un dictionnaire pour savoir quels mots tu peux utiliser et ce qu'ils signifient.
    Comme t'as pas envie de te taper le dictionnaire pour cherche un mot, tu crées une liste qui contient uniquement les mots à côté.

    Un .h te donne la liste des "mots" que tu peux utiliser (c'est du texte simple) et une bibliothèque (.lib, .dll, .a, .so, ...) est le dictionnaire utilisé par le compilateur pour connaître la définition des fonctions que tu utilises (là c'est du binaire).
    Le compilateur a besoin des deux pour "comprendre" ce que tu as écrit.

    Citation Envoyé par enzo68290 Voir le message
    gcc nomSource.c -lpthread -o nomExecutable
    Ça dit : compiler le fichier nomSource.c en utilisant le dictionnaire de pthread et enregistrer le résultat sous le nom "nomExecutable".
    Sous Linux (ou dans un environnement UNIX en général), la partie "-lkkchose" signifie que le compilateur va chercher le fichier libkkchose.so (ou .a si on compile en statique) dans les répertoires de bibliothèques connus.
    Par exemple, si sur un système ces répertoires sont /usr/lib et /usr/local/lib, le compilateur va essayer de lire les fichiers /usr/lib/linkkchose.so et /usr/local/lib/libkkchose.so.
    S'il ne trouve pas ces fichiers, tu auras des erreurs comme celles que tu as obtenues.


    Citation Envoyé par enzo68290 Voir le message
    Je crois que c'est ce qu'il faut faire pour compiler, mais puisque je compte faire du c++ alors ce n'est pas valable
    Pour rendre la ligne valable pour le C++, il suffit de remplacer gcc par g++

    Citation Envoyé par enzo68290 Voir le message
    de deux le compilateur est appeler implicitement par codeblocks ...
    En tout cas, il faut absolument que tu comprennes comment compiler en dehors de l'IDE (pas forcément tout de suite, mais moins tu resteras "dépendant" de ton IDE et mieux tu te porteras )

    Sous Code::Blocks, clic droit sur le projet, "Properties" => "Project's build options..." et après je sais pas mais tu peux essayer d'ajouter -lpthread dans "Compiler settings" => "Other options"

Discussions similaires

  1. Sauvegarder une version d'un programme avec Code Blocks
    Par Okidor12 dans le forum Code::Blocks
    Réponses: 4
    Dernier message: 19/02/2014, 17h07
  2. compiler un programme TC avec code::blocks ou un autre compilateur
    Par acacia dans le forum Autres éditeurs
    Réponses: 6
    Dernier message: 24/01/2008, 18h07
  3. Réponses: 2
    Dernier message: 23/04/2007, 22h37
  4. [kjAPI] Compilation avec Code::Blocks
    Par ThomasCh dans le forum Moteurs 3D
    Réponses: 5
    Dernier message: 17/10/2006, 09h01
  5. [débutant]impossible d'éxecuter avec Code::blocks!
    Par Antigonos Ier Gonatas dans le forum Code::Blocks
    Réponses: 6
    Dernier message: 31/05/2006, 19h53

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