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

 C Discussion :

Edition de lien registerrpc


Sujet :

C

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut Edition de lien registerrpc
    Un problème d'édition de lein pour registerrpc.
    Merci de votre aide.
    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
    ====================
    #include <stdio.h>
    #include <rpc/types.h>
    #include <rpc/xdr.h>
    #include <rpc/rpc.h>
     
     
    typedef struct  { int val1;
      int val2; } couple_entier;
     
    // Le filtre xdr
      bool_t xdr_couple(XDR *p, couple_entier *x)
      { return  (xdr_int(p, &x->val1) &&  xdr_int(p, &x->val2));
      }
     
     
     
    // La procedure RPC
    static int i;
    int *somme (couple_entier  *x)
    { i = x->val1 + x->val2; return &i;}
     
     
    /* Les numeros */
    #define NUM_PROG 0x22222222 /*  numero de programme */
    #define  NUM_VERSION_1 1 /* le numero de version ici 1 */
    #define NUM_SOMME 1 /* numero de la procedure somme */
     
     
     
    main ()
    {
     
      /* enregistrement du service aupres du rpcbind*/ 
      if (registerrpc((unsigned long)NUM_PROG,(unsigned long) NUM_VERSION_1,(unsigned long)  NUM_SOMME,(char *(*)(char *)) somme,(xdrproc_t) xdr_couple, (xdrproc_t) xdr_int) ==-1)
      {perror(" Probleme enregistrement du service somme "); exit(1); }
     
    printf("Attente de client \n");
     
    svc_run();
     
    printf(" Sortie du service \n");
     
     
    }

  2. #2
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    Bonjour,

    Si c'est un problème d'édition de lien, ça n'est pas avec votre fichier source qu'on peut vous aider. L'éditeur de lien ne trouve pas l'une ou les bibliothèques nécessaires des fonctions que vous utilisez, donc erreur.

    Mais je rêve ou vous voulez compiler un programme utilisant RPC et XDR sans savoir comment la génération d'un exécutable se fait en C !!???

    Bon allez je vous trouve un cours : http://www.cmi.univ-mrs.fr/~contensi...=env&page=comp

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut
    Citation Envoyé par saad.hessane Voir le message
    Bonjour,

    Si c'est un problème d'édition de lien, ça n'est pas avec votre fichier source qu'on peut vous aider. L'éditeur de lien ne trouve pas l'une ou les bibliothèques nécessaires des fonctions que vous utilisez, donc erreur.

    Mais je rêve ou vous voulez compiler un programme utilisant RPC et XDR sans savoir comment la génération d'un exécutable se fait en C !!???

    Bon allez je vous trouve un cours : http://www.cmi.univ-mrs.fr/~contensi...=env&page=comp
    Qu'est ce qui vous fait croire que je ne sais générer un exécutable.

    Je pense que vous rêvez en effet.

    Le problème vient de l'absence d'une librairie? L'appel system registerrpc!!
    que l'éditeur ne trouve pas.
    Le problème vient de libc.a. Comment réinstaller glibc sans passer par remove car trop de dépendances!!!

  4. #4
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    D'accord je rêve. L'erreur du linkeur? Le compilateur utilisé? L'os?
    Vous ouvrez une discussion, vous dites "Un problème d'édition de lein pour registerrpc", et vous pondez un code.
    Appel système c'est une fonction... L’éditeur de lien renvoie une erreur de symbol non résolue. Si vous connaissez si bien la chaîne de compilation, pourquoi poster votre code sans l'erreur du linkeur qui est beaucoup plus importante dans ce cas là?
    Vous avez lu l'erreur affichée, vous en déduisez que c'est la fonction registerrpc qui n'est pas résolue. Comment voulez-vous qu'on le devine à partir d'un code source? Ça aurait même pu être la fonction svc_run, perror, printf, ou n'importe qu'elle symbole qu'il y a dans votre code source.
    Savoir générer un exécutable n'est pas synonyme de connaitre les étapes de génération.
    Et si j'ai été aussi froid c'est surtout en réponse à un poste où aucune question n'est posée, aucun problème n'est exposé. Ne le prenez pas mal et je suis désolé de vous avoir brusquer. Bienvenue sur le forum !

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut
    Citation Envoyé par saad.hessane Voir le message
    D'accord je rêve. L'erreur du linkeur? Le compilateur utilisé? L'os?
    Vous ouvrez une discussion, vous dites "Un problème d'édition de lein pour registerrpc", et vous pondez un code.
    Appel système c'est une fonction... L’éditeur de lien renvoie une erreur de symbol non résolue. Si vous connaissez si bien la chaîne de compilation, pourquoi poster votre code sans l'erreur du linkeur qui est beaucoup plus importante dans ce cas là?
    Vous avez lu l'erreur affichée, vous en déduisez que c'est la fonction registerrpc qui n'est pas résolue. Comment voulez-vous qu'on le devine à partir d'un code source? Ça aurait même pu être la fonction svc_run, perror, printf, ou n'importe qu'elle symbole qu'il y a dans votre code source.
    Savoir générer un exécutable n'est pas synonyme de connaitre les étapes de génération.
    Et si j'ai été aussi froid c'est surtout en réponse à un poste où aucune question n'est posée, aucun problème n'est exposé. Ne le prenez pas mal et je suis désolé de vous avoir brusquer. Bienvenue sur le forum !
    ==============================
    L'OS c'est évident linux (fedora 17)

  6. #6
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Bonjour,

    Visiblement, tu n'as pas tout compris aux principes des forum de Développez.com.

    Donne-nous donc les informations suivantes:
    • "Bonjour,"
    • "j'aimerai comprendre l'erreur suivante:"
    • le message d'erreur, légèrement nettoyé de ses fioritures
    • "Je devine que … mais je ne sais pas pourquoi?"
    • "Qu'ai je oublié de faire?"
    • "Merci d'avance"

  7. #7
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    [EDIT]
    Citation Envoyé par daouchy Voir le message
    L'OS c'est évident linux (fedora 17)
    Pas si évident que ça, je ne suis pas devin. Du RPC ça ne se fait pas qu'avec Linux...

    Sous Debian ça compile. Un warning vu que la fonction n'est déclarée nul part, mais le linkeur la trouve dans la bibliothèque appropriée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -lrpcsvc -Wall test.c -o test
    Essayez de chercher la bibliothèque rpc sur fedora. Chez moi c'est /usr/lib/librpcsvc.a, d'où le "-lrpcsvc".

  8. #8
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut
    Citation Envoyé par saad.hessane Voir le message
    [EDIT]

    Pas si évident que ça, je ne suis pas devin. Du RPC ça ne se fait pas qu'avec Linux...

    Sous Debian ça compile. Un warning vu que la fonction n'est déclaré nul part, mais le linkeur la trouve dans la bibliothèque appropriée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    gcc -lrpcsvc -Wall test.c -o test
    Essayez de chercher la bibliothèque rpc sur fedora. Chez moi c'est /usr/lib/librpcsvc.a, d'où le "-lrpcsvc".
    Voici le résultat!
    # gcc -lrpcsvc -Wall serveur.c
    serveur.c: In function ‘main’:
    serveur.c:34:3: attention : implicit declaration of function ‘registerrpc’ [-Wimplicit-function-declaration]
    /tmp/ccSReerZ.o: In function `main':
    serveur.c.text+0x98): undefined reference to `registerrpc'
    collect2: erreur: ld a retourné 1 code d'état d'exécution

  9. #9
    Membre éclairé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Par défaut
    Il semblerait que la fonction "registerrpc" ne soit plus fournit par défaut. Je n'arrive pas à trouver de confirmation sur internet. Déjà sous une ancienne version de Debian que j'utilise, la fonction est absente des headers et doit être maintenu dans le .a avant de la supprimer dans la version d'après (fonction déprécié ?)
    Néanmoins en cherchant j'ai trouvé plusieurs personnes ayant le même problème. Une solution qui selon l'auteur du post semble fonctionner est d'installer libtirpc-dev : http://stackoverflow.com/a/13146569
    Mais je me rappelles bien avoir fait du rpc quand j'étais à l'école, sur Fedora justement (je ne saurais plus vous dire quelle version), et on n'avait besoin de rien installer.

  10. #10
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Décembre 2012
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2012
    Messages : 5
    Par défaut
    Citation Envoyé par saad.hessane Voir le message
    Il semblerait que la fonction "registerrpc" ne soit plus fournit par défaut. Je n'arrive pas à trouver de confirmation sur internet. Déjà sous une ancienne version de Debian que j'utilise, la fonction est absente des headers et doit être maintenu dans le .a avant de la supprimer dans la version d'après (fonction déprécié ?)
    Néanmoins en cherchant j'ai trouvé plusieurs personnes ayant le même problème. Une solution qui selon l'auteur du post semble fonctionner est d'installer libtirpc-dev : http://stackoverflow.com/a/13146569
    Mais je me rappelles bien avoir fait du rpc quand j'étais à l'école, sur Fedora justement (je ne saurais plus vous dire quelle version), et on n'avait besoin de rien installer.

    Merci saad c'est exactement ca la solution.
    Seul libtirp est installée, or les RPCs ont besoin de libtirpc-dev.
    ca marche sous fedora aussi

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

Discussions similaires

  1. Edition des liens croisée
    Par Matthieu Brucher dans le forum Windows
    Réponses: 3
    Dernier message: 22/03/2006, 00h08
  2. Réponses: 11
    Dernier message: 20/01/2006, 12h35
  3. Edition de liens dynamique sous linux
    Par Ipoupaille dans le forum Linux
    Réponses: 4
    Dernier message: 09/01/2006, 21h53
  4. Edition de liens et librairie dynamique
    Par nicolas.pied dans le forum C++
    Réponses: 9
    Dernier message: 14/11/2005, 14h29
  5. Rôle de l'édition de lien?
    Par sali dans le forum C
    Réponses: 6
    Dernier message: 14/05/2005, 21h17

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