各位博友们,今天写程序时遇到这样一个问题。提示undefined reference to 'Socket' ,我也知道这是程序找不到Socket这个函数,因此我看了socket.h头文件,发现它是包含这个函数的,这下我就不知道该怎么处理了?希望博友们给我提供一下能够编译成功的方法及出错的原因,不胜感激。
源代码:
#include <sys/socket.h>
#include <sys/types.h>
#include <netdb.h>
#include <stdio.h>
#include <strings.h>
typedef struct sockaddr SA;
int open_clientfd(char *hostname, unsigned short port);
int main()
{
open_clientfd("debian", 0x1234);
return 0;
}
int open_clientfd(char *hostname, unsigned short port)
{
int clientfd;
struct hostent *host;
struct sockaddr_in serv_addr;
/*建立客户端套接字*/
if((clientfd = Socket(AF_INET, SOCK_STREAM, 0)) < 0)
return -1;
/*根据域名得到主机条目*/
if((host = gethostbyname((const char *)hostname)) == NULL)
return -2;
/*构造服务器套接字地址*/
bzero((char *)&serv_addr, sizeof(serv_addr));
serv_addr.sin_family = AF_INET;
serv_addr.sin_port = htons(port);
char **domain = host->h_addr_list;
serv_addr.sin_addr.s_addr = *((unsigned int *)*domain);
/*建立连接*/
if(connect(clientfd, (SA*)&serv_addr, sizeof(serv_addr)) < 0)
return -3;
return clientfd;
}
输入的命令及结果:
os@debian:~/Desktop/DailyLife$ gcc open_client.c -o open_client
/tmp/cc7TEEWq.o: In function `open_clientfd':
open_client.c:(.text+0x58): undefined reference to `Socket'
collect2: ld returned 1 exit status
Socket的s是小写的吧
被这个小问题困惑了3、4天也是醉了。真心感谢你。有时候最容易犯得问题往往看不到