BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  37 Posts :: 3 Stories :: 24 Comments :: 0 Trackbacks
Recently, I am learning the Unix C and come to know that Sockets are:
– Special files used for network communication (or local interprocess communication)
– Not available in all UNIX versions (some don't represent network connections as files in the file system)

finally I get one example Unix Domain Socket from the website
when trying to compile the application on platform solaris, It always produces the error message as follows:
Undefined                       first referenced
 symbol                             in file
bind                                /var/tmp//ccOrrHMQ.o
recv                                /var/tmp//ccOrrHMQ.o
send                                /var/tmp//ccOrrHMQ.o
accept                              /var/tmp//ccOrrHMQ.o
listen                              /var/tmp//ccOrrHMQ.o
socket                              /var/tmp//ccOrrHMQ.o
ld: fatal: Symbol referencing errors. No output written to echos
collect2: ld returned 1 exit status

I know It's linkage error and the c application could not find the related library file,but donot know how to solve it ,after one afternoon research, I find that we need to link to the socket library when compiling the c socket application on solaris.

-lmylib (lower case 'L') Search the library named mylib for unresolved
symbols (functions, global variables) when linking. The actual name of
the file will be libmylib.a, and must be found in either the default
locations for libraries or in a directory added with the -L flag.

gcc -o echos echos.c -lsocket
and the pthread is the same thing and the thread application can be compiled in the following way
gcc -o thread-create thread-create.c -lpthread.

You can find the lib in the dir /usr/lib

lrwxrwxrwx 1 root root 25 Aug  5  2009 -> ../../lib/
lrwxrwxrwx 1 root root 24 Aug  5  2009 -> ../../lib/

Reference Materials
posted on 2011-08-25 16:33 Life is no respector of any genius. 阅读(1164) 评论(0)  编辑  收藏