Partage
  • Partager sur Facebook
  • Partager sur Twitter

[makefile] je n'arrive pas a linker -libwsock32

Sujet résolu
    14 août 2008 à 14:35:20

    Bonjour,

    Je débute dans la création de makefiles.

    J'essaie actuellement de faire un makefile pour un logiciel dépendant de <winsock2.h>, mais apparement il y a quelque chose qui ne va pas...

    Pouvez vous m'aider, s'il vous plait ?

    CFLAGS  = -W -Wall -ansi -pedantic -s -O2 -Os
    LDFLAGS = -llibwsock32
    
    CC = gcc
    RM = rm -f
    INSTALL_PROG = install -m 755 -s
    
    EXE = main
    
    OBJS = main.o comptes.o SetOutputColor.o getpass.o socket.o pop.o smtp.o base64.o
    
    ALL : $(EXE)
    
    main.o : main.c
            $(CC) -c main.c $(CFLAGS) -o main.o
    
    comptes.o : comptes.c
            $(CC) -c comptes.c $(CFLAGS) -o comptes.o
    
    SetOutputColor.o : SetOutputColor.c
            $(CC) -c SetOutputColor.c $(CFLAGS) -o SetOutputColor.o
    
    getpass.o : getpass.c
            $(CC) -c getpass.c $(CFLAGS) -o getpass.o
    
    socket.o : socket.c
            $(CC) -c socket.c $(CFLAGS) -o socket.o
    
    pop.o : pop.c
            $(CC) -c pop.c $(CFLAGS) -o pop.o
    
    smtp.o : smtp.c
            $(CC) -c smtp.c $(CFLAGS) -o smtp.o
    
    base64.o : base64.c
            $(CC) -c base64.c $(CFLAGS) -o base64.o
    
    $(EXE) : $(OBJS)
            $(CC) $(OBJS) -o $(EXE) $(LDFLAGS)
    
    uninstall :
            $(RM) $(PREFIX)/bin/$(EXE)
    
    clean :
            $(RM) $(OBJS) $(EXE)
    • Partager sur Facebook
    • Partager sur Twitter
      14 août 2008 à 14:41:25

      Citation : yoch

      J'essaie actuellement de faire un makefile pour un logiciel dépendant de <winsock2.h>, mais apparement il y a quelque chose qui ne va pas...

      Pouvez vous m'aider, s'il vous plait ?

      CFLAGS  = -W -Wall -ansi -pedantic -s -O2 -Os
      LDFLAGS = -llibwsock32

      La bibliothèque s'appelle libws2_32.a

      Il faut donc mettre

      -lws32_2

      • Partager sur Facebook
      • Partager sur Twitter
      Music only !
        14 août 2008 à 14:44:37

        Merci -ed- !

        Toutefois, j'ai toujours la même erreur :
        C:\Documents and Settings\Administrateur\Bureau\projet>mingw32-make
        gcc main.o comptes.o SetOutputColor.o getpass.o socket.o pop.o smtp.o base64.o -
        o main -lws32_2
        C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot fin
        d -lws32_2
        collect2: ld returned 1 exit status
        mingw32-make: *** [main] Error 1


        • Partager sur Facebook
        • Partager sur Twitter
          14 août 2008 à 14:49:35

          Citation : yoch

          Merci -ed- !

          Toutefois, j'ai toujours la même erreur :

          C:\Documents and Settings\Administrateur\Bureau\cmak-0.9.6\src>mingw32-make
          gcc main.o comptes.o SetOutputColor.o getpass.o socket.o pop.o smtp.o base64.o -
          o main -lws32_2
          C:\MinGW\bin\..\lib\gcc\mingw32\3.4.5\..\..\..\..\mingw32\bin\ld.exe: cannot fin
          d -lws32_2
          collect2: ld returned 1 exit status
          mingw32-make: *** [main] Error 1

          As-tu indiqué au linker où se trouvais le répertoire (option -L) ?

          Par exemple, si il est dans /codeblocks/lib

          il faut ajouter -L/codeblocks/lib à la commande du linker (chez toi, dans LDFLAGS, par exemple).
          • Partager sur Facebook
          • Partager sur Twitter
          Music only !
            14 août 2008 à 14:58:51

            OK.

            Malheureusement, cela ne marche toujours pas... :honte:
            LDFLAGS = -L/MinGW/lib -lws32_2


            EDIT: cette fois, ça a marché avec :
            LDFLAGS = -L/MinGW/lib -lwsock32


            Problème résolu, merci -ed- !
            • Partager sur Facebook
            • Partager sur Twitter
              14 août 2008 à 15:18:37

              Citation : yoch

              OK.

              Malheureusement, cela ne marche toujours pas... :honte:

              LDFLAGS = -L/MinGW/lib -lws32_2



              EDIT: cette fois, ça a marché avec :

              LDFLAGS = -L/MinGW/lib -lwsock32



              Problème résolu, merci -ed- !


              Attention, c'est la bibliothèque winsock. Avec <winsock2.h>, il faut la version 2 (Winsock 2). Je viens de confirmer qu'elle s'appelle bien libws2_32.a et qu'elle est (chez moi, Vista, C::B 8.02) dans /Programmes/codeblocks/MinGW/lib. Il faut donc bien mettre -lws2_32 . Si ça ne fonctionne pas, c'est cette bibliothèque n'est pas présente dans ta distribution de MinGW, ce qui est très louche.

              Attention, winsock est une version primitive des sockets (Windows 3.11, années 90...) qui n'est pas du tout compatible avec POSIX.1. Winsock 2 est quasiment compatible POSIX.1 à des détails près.

              • Partager sur Facebook
              • Partager sur Twitter
              Music only !
                14 août 2008 à 15:40:50

                Curieusement, ça marche a présent. J'ai du faire une erreur quelque part...

                Merci pour l'info !
                • Partager sur Facebook
                • Partager sur Twitter

                [makefile] je n'arrive pas a linker -libwsock32

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown