请教:我的Socket程序在unix-center上编译不通过? ( 注: 在 t1000.unix-center.net 上)

 

 

Unix-Center.Net » C/C++ » 请教:我的Socket程序在unix-center上编译不通过?


2008-9-30 10:05 yaoike
请教:我的Socket程序在unix-center上编译不通过?

程序如下:


client1.c

/*  Make the necessary includes and set up the variables.  

*/

#include <sys/types.h>
#include <sys/socket.h>
#include <stdio.h>
#include <sys/un.h>
#include <unistd.h>
#include <string.h>


int main()
{
    int sockfd;
    int len;
    struct sockaddr_un address;
    int result;
    char ch = 'A';

/*  Create a socket for the client.  */

    sockfd = socket(AF_UNIX, SOCK_STREAM, 0);

/*  Name the socket, as agreed with the server.  */

    address.sun_family = AF_UNIX;
    strcpy(address.sun_path, "server_socket");
    len = sizeof(address);

/*  Now connect our socket to the server's socket.  */

    result = connect(sockfd, (struct sockaddr *)&address,

len);

    if(result == -1) {
        perror("oops: client1");
        //exit(1);
    }

/*  We can now read/write via sockfd.  */

    write(sockfd, &ch, 1);
    read(sockfd, &ch, 1);
    printf("char from server = %c/n", ch);
    close(sockfd);
    //exit(0);

    return 0;

}



后我用论坛上教的方法编译:
gcc -Wall client1.c -o client1

结果出来这样的错误提示:
-bash-3.00$ gcc -Wall client1.c -o client1
Undefined                       first referenced
symbol                             in file
socket                              /var/tmp//cc2yTgiY.o
connect                             /var/tmp//cc2yTgiY.o
ld: fatal: Symbol referencing errors. No output written to client1
collect2: ld returned 1 exit status


我上google,baidu都查不到这种错误的原因,我估计是不是因为找不到sys/socket.h这个文件导致的错误,呵呵,请教高手解答,多谢多谢!

2008-10-6 15:22 yindajun
我在unix-center上编译就是好好的。:L

2008-10-6 16:19 yaoike
我又试了一遍,还是不可以,你可以用这个用户名: yaoike2 密码: yaoike 帮我看一下究竟是哪里不对吗?多谢!!!

2008-10-6 16:40 seer671
回复 #1 yaoike 的帖子

注意看下出错信息。
是链接时,没有找到相应的函数。
用这个试一试gcc -Wall client1.c -o client1 -lsocket -lnsl

[[i] 本帖最后由 seer671 于 2008-10-6 16:45 编辑 [/i]]

2008-10-6 16:56 yindajun
楼上的正解。 我是在fedora下,你是在solaris下编译出的问题。:lol
在linux下,libc已经包含了socket函数。但在solaris下,就放在了libsocket库下了。
所以你要给出需要的库的名字。

[[i] 本帖最后由 yindajun 于 2008-10-6 17:00 编辑 [/i]]

2008-10-6 17:19 yaoike
多谢你的帮助,问题解决了.多谢~~~

2008-10-11 07:22 yaoike
抱歉,我是新手,可以再追问一下吗?您是根据什么知道socket套接字在solaris下,是放在libsocket库下的呢?还有,您是根据什么知道缺少libsocket库就要加 -lsocket 这个参数,我的意思是我想了解清楚怎么知道所缺的库文件来写上gcc对应的参数? 多谢~~~~~~

2008-10-12 16:34 seer671
回复 #7 yaoike 的帖子

man connect

2008-10-13 21:07 yaoike
哦,非常感谢,了解到了.

页: [1]


Powered by Discuz! Archiver 5.5.0  © 2001-2006 Comsenz Inc.

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值