首页 新闻 会员 周边 捐助

undefined reference to 'Socket' 在Linux下编译引用找不到

0
悬赏园豆:10 [已解决问题] 解决于 2014-11-27 17:15

  各位博友们,今天写程序时遇到这样一个问题。提示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

一零零一的主页 一零零一 | 初学一级 | 园豆:55
提问于:2014-11-27 13:19
< >
分享
最佳答案
1

Socket的s是小写的吧

收获园豆:10
单车博客园 | 菜鸟二级 |园豆:214 | 2014-11-27 14:07

被这个小问题困惑了3、4天也是醉了。真心感谢你。有时候最容易犯得问题往往看不到

一零零一 | 园豆:55 (初学一级) | 2014-11-27 17:15
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册