Link avec GCC

Résolu
mrjulien Messages postés 38 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 28 novembre 2007 - 28 janv. 2005 à 12:09
mrjulien Messages postés 38 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 28 novembre 2007 - 28 janv. 2005 à 14:09
Bonjours a tous.
Je compile avec gcc sous windows (grâce a mingw). Je ne souhaite pas vous ennuyer en créant un topic redondant, mais je n'arrive pas à régler un pbl sur un sujet plusieurs fois abordé ici. Je compile un exemple d'utilisation des sockets, ici la création d'un serveur dont voici le code :

#include <conio.h>
#include <stdio.h>
#include <winsock2.h>
#pragma comment(lib, "libws2_32.a")



main()
{



char buffer[255];


WSADATA WSAData;
WSAStartup(MAKEWORD(2,0), &WSAData);


SOCKET sock;
SOCKET csock;
SOCKADDR_IN sin;
SOCKADDR_IN csin;


sock = socket(AF_INET, SOCK_STREAM, 0);


sin.sin_addr.s_addr = INADDR_ANY;
sin.sin_family = AF_INET;
sin.sin_port = htons(4444);


bind(sock, (SOCKADDR *)&sin, sizeof(sin));
listen(sock, 0);


while(1)
{
int sinsize = sizeof(csin);
if((csock = accept(sock, (SOCKADDR *)&csin, &sinsize)) != INVALID_SOCKET)
{
memset(buffer,0,255);
wsprintf(buffer,"Bienvenu sur mon serveur ;)");
send(csock,buffer,255,0);
}
}





}

Le fichier libws2_32.a est naturellement présent dans le répertoire lib. Pour compiler je lance la commande: gcc -lws2_32 source.c
L'option -l permet de linker une librairie d'aprés le tutorial gcc que j'ai lu. Malgés celà le link ne fonctionne pas : undefined reference to [mailto:`WSAStartup@8' `WSAStartup@8'] etc.....

Merci de votre aide.

4 réponses

cs_Nebula Messages postés 787 Date d'inscription samedi 8 juin 2002 Statut Membre Dernière intervention 7 juin 2007 2
28 janv. 2005 à 12:49
Au lieu de cette horreur : #pragma comment(lib, "libws2_32.a")

Met donc ceci dans ta ligne de commande : -lws2_32



Et GCC linkera l'exe en utilisant libws2_32.a, un exemple :

gcc main.c -lws2_32 -o toto.exe
1
bayeto Messages postés 224 Date d'inscription mardi 12 août 2003 Statut Membre Dernière intervention 18 octobre 2010
28 janv. 2005 à 12:17
Petite question: ce prama est-il reconnu par gcc?
#pragma comment(lib, "libws2_32.a")
Je crois que beaucoup de pramas sont specifiques aux compilateurs.
0
mrjulien Messages postés 38 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 28 novembre 2007
28 janv. 2005 à 12:39
http://www.guru-meditation.net/main.php3?root=110
>"Vous pouvez ensuite effacer si vous le souhaitez les protos et pragmas http://www.guru-meditation.net/main.php3?SEARCHFUNC=(répertoires proto, pragma et pragmas) car GCC ne les utilise pas"

Apparement il semblerait que cela pose problème. Comment passer outre ?
0
mrjulien Messages postés 38 Date d'inscription vendredi 15 octobre 2004 Statut Membre Dernière intervention 28 novembre 2007
28 janv. 2005 à 14:09
Merci bien, problème résolu. Je pense que ce sujet aidera d'autre personne.
Merci encore de votre participation :]
0
Rejoignez-nous