2009-09-17 6 views
4

J'essaye de faire une programmation de socket, en écrivant un programme client-serveur simple. Mais quand j'essaye de compiler le programme, j'obtiens cette erreur.ne peut pas trouver -lsocket, problème de compilation dans le programme client-serveur?

gcc -o showip showip.c -lnsl -lsocket -lresolv 
showip.cc: In function ‘int main(int, char**)’: 
/usr/bin/ld.real: cannot find -lsocket 
collect2: ld returned 1 exit status 

je tente d'installer lib faire,

sudo apt-get install happycoders-libsocket-dev 

et quand je compile, je reçois toujours la même erreur.

Comment puis-je me débarrasser de cela? Merci.

+5

Sous Linux, les fonctions de socket sont en libc, donc aucune option de lien spécial n'est nécessaire. Sur Solaris, vous avez besoin de -lsocket. – mark4o

+0

J'étais sur Ubuntu et j'ai eu le même problème. En lisant le commentaire de mark4o, je me suis juste débarrassé du drapeau -lsocket et cela a permis au programme que j'essayais de compiler de compiler et de lancer avec succès. Merci mark4o! –

Répondre

4

Normalement, la bibliothèque binaire est fournie avec un paquet et les en-têtes avec un autre avec le même nom et un "-dev" derrière.

Peut-être que vous avez manqué happycoders-libsocket.

Il vous manque ce paquet happycoders-libsocket, en supposant que vous êtes dans Ubuntu.

Apparemment, le paquetage happycoders-libsocket dans ubuntu place libsocket.so libreary dans/usr/lib/happycoders/et ce n'est pas un emplacement standard pour les bibliothèques, il devrait être directement dans/usr/lib /. En utilisant -L vous chargez le compilateur, ou l'éditeur de liens dans ce cas, de rechercher les fichiers de bibliothèque dans ce répertoire supplémentaire.

+0

J'essaie de l'installer en faisant sudo apt-get installer happycoders-libsocket, et il dit qu'il est déjà installé –

+2

Essayez d'ajouter "-L/usr/lib/happycoders" à votre compilation –

+0

Merci, ça marche maintenant, mais je voudrais vraiment Appréciez si vous pouviez expliquer pourquoi -lsocket ne fonctionnait pas et pointait vers n'importe quel endroit où je pourrais obtenir plus d'informations à ce sujet. Merci encore. –

Questions connexes