当前位置: 技术问答>linux和unix
unix下socket 编译的问题
来源: 互联网 发布时间:2016-09-25
本文导语: 请大侠们指点, 问题1, gcc -o client -c client.c -lsocket -lnsl我编译client。c文件 可是总会说 gcc: -lsocket: linker input file unused because linking not done gcc: -lnsl: linker input file unused because linking not done socket 是有...
请大侠们指点,
问题1, gcc -o client -c client.c -lsocket -lnsl我编译client。c文件 可是总会说
gcc: -lsocket: linker input file unused because linking not done
gcc: -lnsl: linker input file unused because linking not done
socket 是有用到的。
问题2, 出了client.c 我还有一个server.c 他们分别在2个文件夹里, 所以我就又2个makefile。2个makefile根本是一样的,是昨天csdn上一位达人交给我的。server的就可以make过,可是client的就不可以报错为:
Undefined first referenced
symbol in file
socket /var/tmp//ccGK2ahw.o
connect /var/tmp//ccGK2ahw.o
inet_pton /var/tmp//ccGK2ahw.o
ld: fatal: Symbol referencing errors. No output written to a.out
还请各位指点了,
2个makefile:
server的:
server:server.o
gcc -o$@ server.o -lsocket
server.o: server.c header.h
gcc -Wall server.c
client的:
client:client.o
gcc -o$@ client.o -lc -lsocket -lnsl
client.o: client.c ../server/header.h
gcc -Wall client.c
问题1, gcc -o client -c client.c -lsocket -lnsl我编译client。c文件 可是总会说
gcc: -lsocket: linker input file unused because linking not done
gcc: -lnsl: linker input file unused because linking not done
socket 是有用到的。
问题2, 出了client.c 我还有一个server.c 他们分别在2个文件夹里, 所以我就又2个makefile。2个makefile根本是一样的,是昨天csdn上一位达人交给我的。server的就可以make过,可是client的就不可以报错为:
Undefined first referenced
symbol in file
socket /var/tmp//ccGK2ahw.o
connect /var/tmp//ccGK2ahw.o
inet_pton /var/tmp//ccGK2ahw.o
ld: fatal: Symbol referencing errors. No output written to a.out
还请各位指点了,
2个makefile:
server的:
server:server.o
gcc -o$@ server.o -lsocket
server.o: server.c header.h
gcc -Wall server.c
client的:
client:client.o
gcc -o$@ client.o -lc -lsocket -lnsl
client.o: client.c ../server/header.h
gcc -Wall client.c
|
哈,不是吧..
gcc -Wall server.c ==> gcc -Wall -c server.c
gcc -Wall client.c ==> gcc -Wall -c client.c
另外,需要-lnsl吗?
gcc -Wall server.c ==> gcc -Wall -c server.c
gcc -Wall client.c ==> gcc -Wall -c client.c
另外,需要-lnsl吗?
|
问题1, gcc -o client -c client.c -lsocket -lnsl:
将-c选项去掉。-c选项表示只生成中间文件(也就是.o文件)。所以不需要用到后面的链接库来生成可执行程序。将-c去掉后,就会生成可执行程序。
问题二:
先按照1楼说的改改看
将-c选项去掉。-c选项表示只生成中间文件(也就是.o文件)。所以不需要用到后面的链接库来生成可执行程序。将-c去掉后,就会生成可执行程序。
问题二:
先按照1楼说的改改看