首页 > 代码库 > solaris bind 符号未定义
solaris bind 符号未定义
ld: fatal: Symbol referencing errors
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
http://beej.us/guide/bgipc/output/html/singlepage/bgipc.html#unixsockserv.
when trying to compile the application on platform solaris, It always produces the error message as follows:
– 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
http://beej.us/guide/bgipc/output/html/singlepage/bgipc.html#unixsockserv.
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.
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
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 -lnslsymbols (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.
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 libpthread.so -> ../../lib/libpthread.so.1
lrwxrwxrwx 1 root root 24 Aug 5 2009 libsocket.so -> ../../lib/libsocket.so.1
Reference Materials
http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#solaris
http://www.fortunecity.com/skyscraper/arpanet/6/cc.htm
http://developers.sun.com/solaris/articles/solaris_linux_app.html
lrwxrwxrwx 1 root root 24 Aug 5 2009 libsocket.so -> ../../lib/libsocket.so.1
Reference Materials
http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#solaris
http://www.fortunecity.com/skyscraper/arpanet/6/cc.htm
http://developers.sun.com/solaris/articles/solaris_linux_app.html
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。