Unix freebsd网络程序编译

Unix freebsd网络程序编译,unix,networking,freebsd,bsd,Unix,Networking,Freebsd,Bsd,我试图在FreeBSD8上编译一些简单的网络程序,并遇到编译问题。我正在创建一个简单的客户机-服务器程序,但网络中的任何功能或结构都不会被编译 例如,我使用标准socket()调用来创建一个套接字,但遇到了一个错误“调用的对象套接字不是函数” 如果我删除网络代码,我的玩具程序就会编译。为了简单起见,我刚刚举了一个不编译的简单示例: #include <stdio.h> #include <sys/types.h> #incl

我试图在FreeBSD8上编译一些简单的网络程序,并遇到编译问题。我正在创建一个简单的客户机-服务器程序,但网络中的任何功能或结构都不会被编译

例如,我使用标准socket()调用来创建一个套接字,但遇到了一个错误“调用的对象套接字不是函数”

如果我删除网络代码,我的玩具程序就会编译。为了简单起见,我刚刚举了一个不编译的简单示例:

#include <stdio.h>                        
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
void main(){
 int socket = socket(PF_INET,SOCK_STREAM,IPPROTO_TCP);
 printf("Could create sockets without any issues.\n");
}
#包括
#包括
#包括
#包括
void main(){
int socket=套接字(PF_INET、SOCK_STREAM、IPPROTO_TCP);
printf(“可以创建没有任何问题的套接字。\n”);
}

我用“cc toy_prog.c-lc”编译了它,并给出了上面提到的错误。

一个非常简单的错误。您已经定义了一个局部变量,该变量与您试图调用的外部函数同名(
socket
)。尝试以下操作,您将得到相同的错误:

int f()
{
    return 0;
}

void main()
{
    int f = f();
}

一个非常简单的错误。您已经定义了一个局部变量,该变量与您试图调用的外部函数同名(
socket
)。尝试以下操作,您将得到相同的错误:

int f()
{
    return 0;
}

void main()
{
    int f = f();
}

“我的程序无法链接到库(libc)”是什么意思?这是对代码设计/构造的限制,还是说链接器找不到libc或??消息中包含的错误消息(格式正确)将使人们更容易帮助您。你知道
make
makefile
吗?只有最简单的项目才能在没有makefile的情况下完成。祝你好运。你打电话来怎么样?它具有签名
int套接字(int域、int类型、int协议)
。也许你可以提供你的代码摘录。请把你的代码放在你的问题里。祝你好运。你说的“我的程序无法链接到库(libc)”是什么意思?这是对代码设计/构造的限制,还是说链接器找不到libc或??消息中包含的错误消息(格式正确)将使人们更容易帮助您。你知道
make
makefile
吗?只有最简单的项目才能在没有makefile的情况下完成。祝你好运。你打电话来怎么样?它具有签名
int套接字(int域、int类型、int协议)
。也许你可以提供你的代码摘录。请把你的代码放在你的问题里。祝你好运