Forum Programmation.c librairie introuvable

Posté par  (site web personnel) .
Étiquettes : aucune
0
5
nov.
2004
Bonsoir,

je tente de compiler un ptit programme maison utilisant libnet, et bien qu'ayant installé libnet1 et libnet1-dev, gcc me dit toujours la meme chose :
gcc -o plop plop.c
/tmp/ccUr4juG.o(.text+0x41): In function `main':
: undefined reference to `net_init'
/tmp/ccUr4juG.o(.text+0x65): In function `main':
: undefined reference to `net_loadconfig'
/tmp/ccUr4juG.o(.text+0x89): In function `main':
: undefined reference to `net_detectdrivers'
/tmp/ccUr4juG.o(.text+0xad): In function `main':
: undefined reference to `net_initdrivers'
collect2: ld a retourné 1 code d'état d'exécution

J'ai essayé de passer la librairie en parametre, mais j'm'embourbe, en général mes programmes utilisent des libs standard et cette ligne de commande suffit, donc là je sêche...

Merci pour votre aide
  • # et -lnet ?

    Posté par  . Évalué à 2.

    T'as essayé avec -lnet ?
    • [^] # Re: et -lnet ?

      Posté par  (site web personnel) . Évalué à 1.

      idem :'(
      • [^] # Re: et -lnet ?

        Posté par  . Évalué à 1.

        Il doit y avoir un fichier libnet-config dans /usr/bin, essaies :

        gcc 'libnet-config --cflags --libs' -o plop plop.c
        • [^] # Re: et -lnet ?

          Posté par  (site web personnel) . Évalué à 1.

          libnet-config --cflags --libs me retourne -lnet

          On retombe donc dans la solution de Pat le nain :(
          • [^] # Re: et -lnet ?

            Posté par  . Évalué à 1.

            Tu utilises quelle version de la libnet ?

            Il semble y en avoir 2 diiférentes, celle du site de sourceforge (http://libnet.sourceforge.net(...)) qui est la version 0.10.11 et qui définit bien les fonctions qu'il te manque (net_init(), net_loadconfig(), etc....).

            Et la version 1.2.2.1-1 du site de debian (unstable) qui n'utilise pas ces fonctions mais plutot : libnet_config() etc ... (voir la doc)
            • [^] # Re: et -lnet ?

              Posté par  (site web personnel) . Évalué à 1.

              J'ai pris la libnet1 de la base debian, car la libnet0 est marqué comme obsolete dans apt.

              Jvais essayer avec la libnet0 pour voir ce que ca donne.
              • [^] # Re: et -lnet ?

                Posté par  . Évalué à 1.

                Tu peux aussi faire un petit :

                grep -n -r net_init /usr/include/libnet/*

                pour voir si les fonctions net_init et net_inidrivers sont bien définies dans les headers de la lib.
              • [^] # Re: et -lnet ?

                Posté par  . Évalué à 1.

                La libnet de debian vient du site http://www.packetfactory.net/libnet/(...)
                et un rapide coup d'oeil sur la doc du site montre qu'elle n'utilise pas les fonctions que tu cherches (elles commencent toutes par libnet_quelquechose() ).

                Les fonctions que tu utilises dans ton programme viennent de la libnet du site de sourceforge.




                Hope this helps :-)
                • [^] # Re: et -lnet ?

                  Posté par  (site web personnel) . Évalué à 1.

                  oui il semble en effet que cette libnet existe en 2 versions bien différente.

                  N'arrivant pas a compiler la libnet de sourceforge, j'vais adapter mon programme pour qu'il marche avec la libnet de packetfactory/debian...

                  Merci pour ton aide.
  • # AMHA

    Posté par  (site web personnel) . Évalué à 0.

    pour compiler, tu as besoin de la version -dev du pakage ... verifie 3 fois que tu l as bien avant de continuer. Pour etre sure et certain, fais un
    ls /usr/include | grep libnet
    si y a rien, c est que le pakage n est pas installe.

    ensuit, il faut include la lib dans les src de ton apli ... c est evident, mais des fois on oublie. Matte TOUS tes fichiers source, et verifie dans chacun que tu inclus bien la lib ...

    enfin, il faut compiler contre cette lib : la j ai vu un -lnet qqpart qui me parait touta fait aproprie.

    le pakage libnet1 ne sert qu a l execution.

    Si ca marche tj pas...

    cd /usr/include
    rgrep -nri "net_detectdrivers" *

    si il te sors rien, et que pourtant

    ls /usr/include | grep libnet

    te donnait un resultat, c est que la lib est mal installee.
    si ca te sors qqch, alors ca devrait compiler; reverifie mes points 2 et 3.

    Si au bout de 20 mn y a tj rien ... la solution ultime est :
    irc.freenode.net -> chan #c
    • [^] # Re: AMHA

      Posté par  (site web personnel) . Évalué à 2.

      le -lnet ne sert que si la lib est dans les répertoires standards.
      essaye de voir ou elle est installé, et si son répertoire se trouve dans /etc/ld.so.sonf, sinon rajoute le. (j'imagine qu'il y est... mais ça peut servir en cas de compil manuelle)
      ensuite :
      ldconfig
      • [^] # Re: AMHA

        Posté par  . Évalué à 1.

        sans ça, rajouter un -L/repertoire/vers/libnet -lnet à gcc aurait le même résultat et sans les droits root, mais il semble que ce ne soit pas vraiment le pb.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.