unix下socket 编译的问题

zizizhizhi 2010-09-06 05:22:18
请大侠们指点,
问题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


...全文
65 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwwunix 2010-09-07
  • 打赏
  • 举报
回复
问题1, gcc -o client -c client.c -lsocket -lnsl:
将-c选项去掉。-c选项表示只生成中间文件(也就是.o文件)。所以不需要用到后面的链接库来生成可执行程序。将-c去掉后,就会生成可执行程序。
问题二:
先按照1楼说的改改看
justkk 2010-09-07
  • 打赏
  • 举报
回复
哈,不是吧..
gcc -Wall server.c ==> gcc -Wall -c server.c
gcc -Wall client.c ==> gcc -Wall -c client.c

另外,需要-lnsl吗?

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧