views:

486

answers:

1

I am trying to do some socket programming, writing a simple client-server program. But when I try to compile the program, I get this error.

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

I try to install lib doing this,

sudo apt-get install happycoders-libsocket-dev

and when I compile, I still get the same error.

How can I get rid of this ? Thanks.

+2  A: 

Normally the library binary comes with one package and the headers with another one with tha same name and a "-dev" behind.

Maybe you are missing plain happycoders-libsocket.

You are missing this package happycoders-libsocket, assuming you are in ubuntu.

Apparently happycoders-libsocket package in ubuntu is placing the libsocket.so libreary in /usr/lib/happycoders/ and that is not a standard place for libs, it should be directly inside /usr/lib/. Using -L you instruct the compiler, or linker in this case, to search for library files in that extra directory

Arkaitz Jimenez
I try to install it doing sudo apt-get install happycoders-libsocket, and it says it is already installed
seg.server.fault
Try adding "-L /usr/lib/happycoders" to your compilation
Arkaitz Jimenez
Thanks, it works now, but I would really appreciate if you could explain why -lsocket wasn't working and pointers to any place where I can get more information about this. Thanks, again.
seg.server.fault
@seg.server.fault. -lsocket tells your linker to link against the library libsocket.so. The -L option tells the linker WHERE to look for libraries
Glen