c 语言---undefined reference to `socket'的问题

龙欣软件 2007-12-14 04:56:08
最近在自学c语言,在学网络这章时遇到一个问题:
代码如下:
#include <stdio.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include "chinatime.c"
#define myport 6666
#define max 100
int main(){
struct chinatime tc;
int sockfd;
struct sockaddr_in myaddr,otheraddr;
int addr_len,numaddr;
char buf[max];
tc=to_china_time(NULL,tc);
printf("-------------测试程序开始( %s %s %s)------------\n",tc.y_m_d,tc.h_m_s,tc.wday);
sockfd=socket(AF_INET,SOCK_DGRAM,0);
getch();
return 0;
}
sockfd=socket(AF_INET,SOCK_DGRAM,0);**********这行报错:undefined reference to `socket'
我在sys文件夹下能找到socket.h,
并能找到文件中的声明:extern int socket (int __domain, int __type, int __protocol) __THROW;
不知为什么?请各位多指点.
...全文
2015 16 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
yunhappy 2007-12-14
  • 打赏
  • 举报
回复
libc.a 把这个也拷过来~~~
Treazy 2007-12-14
  • 打赏
  • 举报
回复
>>mingw下的不全

应该不会不全吧,只是有些名字可能变了!可以去查查

另外你直接把头文件包含进来也是没用的,因为库文件中没有对应的函数,所以连接不到

或者楼主你可以上网自己把这个函数原型提取出来,然后自己编译!
龙欣软件 2007-12-14
  • 打赏
  • 举报
回复
可能是mingw本身没有socket.h头文件,也就没有库文件,所以即使把头文件copy来也不行.
不知对不对
believefym 2007-12-14
  • 打赏
  • 举报
回复
无语了。。。。。。
龙欣软件 2007-12-14
  • 打赏
  • 举报
回复
1楼所说的,我觉得不可能,文件都能找到,定义一定找到.
不明白2楼的意思.要配置什么库?
------------
找到的只是包含声明的文件,谁说定义一定能找到了
不是开源的话,定义就在库里面
------------------------------------
回10楼:我其它的函数如printf getch等能用,你说是不是开源的
龙欣软件 2007-12-14
  • 打赏
  • 举报
回复
mingw下的不全,所以我到linux copy.
believefym 2007-12-14
  • 打赏
  • 举报
回复
1楼所说的,我觉得不可能,文件都能找到,定义一定找到.
不明白2楼的意思.要配置什么库?
------------
找到的只是包含声明的文件,谁说定义一定能找到了
不是开源的话,定义就在库里面
Treazy 2007-12-14
  • 打赏
  • 举报
回复
晕,mingw下面本身就有相对应的头文件和库文件,好象不用linux下的
乱了 乱了~~
龙欣软件 2007-12-14
  • 打赏
  • 举报
回复
我用的是eclips+cdt+MinGW.所有头文件是从liunx的usr/include/copy下来的
龙欣软件 2007-12-14
  • 打赏
  • 举报
回复
照3楼的做了,还是不行
Treazy 2007-12-14
  • 打赏
  • 举报
回复
你的环境是什么,用的是什么编译器?

你看看你自己的path中是否包含了那些头文件
如果没有的话,那可能就会报上面的错误

标准unix系统中
socket函数需要包含头文件
socket.h

sys/type.h
龙欣软件 2007-12-14
  • 打赏
  • 举报
回复
1楼所说的,我觉得不可能,文件都能找到,定义一定找到.
不明白2楼的意思.要配置什么库?

NKLoveRene 2007-12-14
  • 打赏
  • 举报
回复
还不行就编译的时候加-I/..include/之类的
连接时候-L/..lib/之类的
NKLoveRene 2007-12-14
  • 打赏
  • 举报
回复
#include <arpa/inet.h>
把这个也加上试试
还不行就在编译的时候加-lsocket选项
believefym 2007-12-14
  • 打赏
  • 举报
回复
是不是库没配置好
believefym 2007-12-14
  • 打赏
  • 举报
回复
声明是有了,没找到定义吧

70,023

社区成员

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

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