Undefined reference

seaboat_wang 2010-06-28 10:02:14
在学习Computer System这本书
看到第十二章, 按照书上的代码敲了一个Web Server出来

#include "csapp.h"

void echo(int connfd);

int main( int argc, char **argv)
{
int listenfd, connfd, port, clientlen;
struct sockaddr_in clientaddr;
struct hostent *hp;
char *haddrp;

if(argc != 2)
{
fprintf(stderr, "Usage: %s <port> \n", argv[0]);
exit(0);
}
port = atoi(argv[1]);

listenfd = Open_listenfd(port);
while(1)
{
clientlen = sizeof(clientaddr);
connfd = accept(listenfd, (SA *)&clientaddr, &clientlen);

hp = Gethostbyaddr( (const char *)&clientaddr.sin_addr.s_addr, sizeof(clientaddr.sin_addr.s_addr), AF_INET);
haddrp = inet_ntoa(clientaddr.sin_addr);
printf("Server connected to %s (%s)\n", hp->h_name, haddrp);

echo(connfd);
Close(connfd);

}
exit(0);
}

void echo(int connfd)
{
size_t n;
char buf[MAXLINE];
rio_t rio;

Rio_readinitb(&rio,connfd);
while( (n = Rio_readlineb(&rio, buf, MAXLINE)) != 0)
{
printf("Server received %d bytes\n", n);
Rio_writen(connfd, buf, n);
}
}





在Ubuntu 64bit下面
gcc -Wall server.c -o server

编译器报错:
undefined reference to "Open_listenfd"
undefined reference to "Gethostbyaddr"
undefined reference to "Close"

undefined reference to "Rio_readinitb"
undefined reference to "Rio_writen"
undefined reference to "Rio_readlineb"


头文件 csapp.h我是从教材的官网上下载的
我也看过了, 上面这些“undefined”的函数, 在头文件里面也有。

不明白为什么编译器报错, 望指教!

谢谢!
...全文
345 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
seaboat_wang 2010-06-28
  • 打赏
  • 举报
回复
感谢各位, 我在Computer System的官网上找到源码了。

确实是少了.c文件, 我刚刚没有下载到

现在已经可以运行了


再次感谢!
sky198306 2010-06-28
  • 打赏
  • 举报
回复
楼上的点H文件就是头文件 HEAD
cattycat 2010-06-28
  • 打赏
  • 举报
回复
缺少头文件和库,他这本书用的不是系统的库,可能自己实现了一个库。
arong1234 2010-06-28
  • 打赏
  • 举报
回复
看到你所有的报错函数都以大写开头,估计都是这个问题
arong1234 2010-06-28
  • 打赏
  • 举报
回复
一个简单的错误,gethostbyname不是Gethostbyname,注意大小写
liutengfeigo 2010-06-28
  • 打赏
  • 举报
回复
什么头文件
昵称很不好取 2010-06-28
  • 打赏
  • 举报
回复
这些东西没有定义,把需要链接的库和实现文件给链接进来
赵4老师 2010-06-28
  • 打赏
  • 举报
回复
加“-L头文件所在目录”?
honemay 2010-06-28
  • 打赏
  • 举报
回复
"csapp.h"这个头文件的实现文件,也是csapp.c文件有没有?有的话那就是csapp.c没有编译
编译的时候改一下,前提是有csapp.c这个文件
gcc -Wall server.c csapp.c -o server

70,023

社区成员

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

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