unix下,socket编译出错

xiaochun_1999 2010-05-12 08:40:44
小弟在unix下使用UDP发送数据,程序编译时出现以下错误,是不是头文件的问题???
type
Undefined first referenced
symbol in file
diep /tmp/cczfkcVf.o
sendto /tmp/cczfkcVf.o
socket /tmp/cczfkcVf.o
inet_aton /tmp/cczfkcVf.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status

谢谢各位
...全文
133 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
xiaochun_1999 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 qingtianhit 的回复:]

引用 5 楼 yanran_hill 的回复:
从你的错误结果来看,应该是连接错误,找不到函数,你确认连接的时候,加上了 -lsocket标志了吗?


这个试了么?不行的话 用 -lnsl 试试
[/Quote]
-lsocket 可以了,谢谢各位!
qingtianhit 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yanran_hill 的回复:]
从你的错误结果来看,应该是连接错误,找不到函数,你确认连接的时候,加上了 -lsocket标志了吗?
[/Quote]

这个试了么?不行的话 用 -lnsl 试试
xiaochun_1999 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 qingtianhit 的回复:]

引用 7 楼 xiaochun_1999 的回复:
引用 3 楼 tulipcaicai 的回复:

用写的是C++还是C文件啊?C++要用G++编译,C用GCC编译。

程序是C语言的。如下:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

……
[/Quote]
我这里还是不行,加入您说的#include <unistd.h>
#include <string.h>
#include <stdlib.h>。

gcc编译结果
Undefined first referenced
symbol in file
bind /tmp/ccfSLQqj.o
recv /tmp/ccfSLQqj.o
socket /tmp/ccfSLQqj.o
ld: fatal: Symbol referencing errors. No output written to a.out
collect2: ld returned 1 exit status
qingtianhit 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 xiaochun_1999 的回复:]
引用 3 楼 tulipcaicai 的回复:

用写的是C++还是C文件啊?C++要用G++编译,C用GCC编译。

程序是C语言的。如下:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main()
{
int sock;
……
[/Quote]

没问题啊 ,可以编译过去 ,我试了。
加上
#include <unistd.h>
#include <string.h>
#include <stdlib.h>
xiaochun_1999 2010-05-13
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 tulipcaicai 的回复:]

用写的是C++还是C文件啊?C++要用G++编译,C用GCC编译。
[/Quote]
程序是C语言的。如下:
#include <stdio.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>

int main()
{
int sock;
struct sockaddr_in addr;

char buf[2048];

sock = socket(AF_INET, SOCK_DGRAM, 0);

addr.sin_family = AF_INET;
addr.sin_port = htons(12345);
addr.sin_addr.s_addr = INADDR_ANY;

bind(sock, (struct sockaddr *)&addr, sizeof(addr));

memset(buf, 0, sizeof(buf));
recv(sock, buf, sizeof(buf), 0);

printf("%s\n", buf);

close(sock);

return 0;
}
使用gcc直接编译:gcc rcv.c
bobo364 2010-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 windowskiller 的回复:]
你的make文件呢?
从错误描述来看,库的路径不对,链接失败。
[/Quote]

从楼主给的资料来看,也只能这么说了
yanran_hill 2010-05-12
  • 打赏
  • 举报
回复
从你的错误结果来看,应该是连接错误,找不到函数,你确认连接的时候,加上了 -lsocket标志了吗?
james_hw 2010-05-12
  • 打赏
  • 举报
回复
感觉是makefile有问题
tulipcaicai 2010-05-12
  • 打赏
  • 举报
回复
用写的是C++还是C文件啊?C++要用G++编译,C用GCC编译。
xiaochun_1999 2010-05-12
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 windowskiller 的回复:]

你的make文件呢?
从错误描述来看,库的路径不对,链接失败。
[/Quote]
我是直接用gcc -g编译的。。
wINDowsKiller 2010-05-12
  • 打赏
  • 举报
回复
你的make文件呢?
从错误描述来看,库的路径不对,链接失败。

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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