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

Réseau C Discussion :

undefined reference to `sock_errno'


Sujet :

Réseau C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Par défaut undefined reference to `sock_errno'
    Bonjour,

    Dans ma petite appli client serveur écrit en C, j'ai bien fait #include <sys/socket.h>.
    Mais quand je vais un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if(err<0) {
        printf("Socket returned error #%d,program terminated\n",sock_errno());
    il m'affiche :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    cli_test1.c:(.text+0x2db): undefined reference to `sock_errno'
    collect2: ld returned 1 exit status
    j'arrive pas à voir d'ou vient l'erreur.

    Merci d'avance pour votre aide.

  2. #2
    Membre éprouvé
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    81
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 81
    Par défaut
    On dirait que ton linker trouve pas ta fonction. Tu as ajouté la bibliothèque correspondante à ton projet ?

  3. #3
    Membre émérite Avatar de orfix
    Homme Profil pro
    Inscrit en
    Avril 2007
    Messages
    707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Avril 2007
    Messages : 707
    Par défaut
    Je ne connais pas sock_errno() et je ne pense pas qu'elle fasse partie de l'API des Berkeley sockets, en tous les cas sur mon système cette fonction n'existe pas.
    Pour récupérer le numéro d'erreur d'un appel système, tu peux voir du côté de la variable errno déclarée dans le fichier d'en-tête errno.h.

    On ce qui me concerne voilà ce que je ferais:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #include <errno.h>
    <...>
     
    int s = socket(domain, type, protocol);
     
    if(s==-1) {
    	int err = errno;
    	printf("Socket returned %d : %s",err, strerror(err));
    	<...>
    }

  4. #4
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Par défaut
    La bibliothèque correspondant à socket.h elle est déja présente dans linux non, non ? ( je suis sur Ubuntu ). Pourquoi ajouter la bibliothèque ?

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 67
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Billets dans le blog
    2
    Par défaut
    "être présent sur linux" ne veut rien dire par rapport à la compilation..

    "être présent dans la librairie standard" c'est autre chose, et ça ça veut dire qulque hose...

  6. #6
    Membre éclairé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2007
    Messages
    630
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2007
    Messages : 630
    Par défaut
    Que dois-je vérifier alors ?
    -- j'ai bien /usr/include/sys/socket.h, ca c'est OK
    -- pour la bibliothèque, je dois vérifier la présence de quel fichier exactement ? socket.o ? socket.a ? quand je fais un sudo find / -name "socket.[ao]" il ne trouve pas ...
    Merci d'avance pour votre aide.

Discussions similaires

  1. winsock.h : undefined reference...
    Par abraxas dans le forum Dev-C++
    Réponses: 14
    Dernier message: 06/08/2012, 13h42
  2. Undefined reference compilation réseau
    Par Ren97 dans le forum Dev-C++
    Réponses: 11
    Dernier message: 08/03/2005, 09h46
  3. Compilation de xmms : undefined reference to...
    Par Michaël dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/02/2005, 19h05
  4. undefined reference to `xmlParseFile'
    Par Clemaster dans le forum Autres éditeurs
    Réponses: 2
    Dernier message: 25/06/2004, 20h38
  5. g++ : undefined reference to ...
    Par le_barbu dans le forum Autres éditeurs
    Réponses: 16
    Dernier message: 14/05/2004, 07h23

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