Chinaunix

标题: 我在编译第一个apue程序时,出现错误,请帮我看看 [打印本页]

作者: liuyishao    时间: 2006-02-16 15:35
标题: 我在编译第一个apue程序时,出现错误,请帮我看看
原书代码:

  1. #include <sys/types.h>
  2. #include <dirent.h>
  3. #include "ourhdr.h"

  4. int
  5. main(int argc,char *argv[])
  6.         DIR         *dp
  7.         struct dirent *dirp;
  8.          
  9.          if (argc != 2)
  10.                  err_quit("a single argument (the directory name) is required");
  11.          if ((dp = opendir(argv[1])) == NULL)
  12.                   err_sys("can't open %s",argv[1]);
  13.          while ((dirp =readdir(dp)) != NULL)
  14.                   printf("%\n",dirp->d_name);

  15.           closedir(dp);
  16.           exit(0);
  17. }
复制代码


编译时,总是出现:

  1. /var/tmp//ccJsgUhB.O(.text+0x2b):in function main:
  2. undefined reference to 'err_quit'
  3. /var/tmp//ccJsgUhB.O(.text+0x5f):in function main:
  4. undefined reference to 'err_sys
复制代码


函数的原型是:

  1. void err_quit(const char *,...)
  2. void err_sys(const char *,...)
复制代码


请问这是什莫原因?谢谢
作者: 雨丝风片    时间: 2006-02-16 15:46
原帖由 liuyishao 于 2006-2-16 15:35 发表
原书代码:
[code]
#include <sys/types.h>
#include <dirent.h>
#include "ourhdr.h"

int
main(int argc,char *argv[])
        DIR         *dp
        struct dirent *dirp; ...


光有原型没用,链接时没找到该函数的实现代码。你是从网上下的整套代码还是自己敲进去的?
如果是网上下的,那么你按照README文件说的步骤把库文件编译、安装好就没问题了,新版
的代码在FreeBSD上的安装很简单的。如果你是自己敲的代码,那就别管他那套了,缺哪个函
数自己随便写一个就是了。
作者: liuyishao    时间: 2006-02-16 19:59
原帖由 雨丝风片 于 2006-2-16 15:46 发表


光有原型没用,链接时没找到该函数的实现代码。你是从网上下的整套代码还是自己敲进去的?
如果是网上下的,那么你按照README文件说的步骤把库文件编译、安装好就没问题了,新版
的代码在FreeBSD上的安装很 ...

谢谢,确实忽略了。
作者: colddawn    时间: 2006-02-17 16:48
apue的代码在书中所写的不完整,完整代码在作者出版商ftp上,前言里面有,不过因为一些历史性问题,也是编译不过的,呵呵
作者: fangzhang    时间: 2006-02-17 17:15
书后面的附录里也有这些的
作者: colddawn    时间: 2006-02-17 17:17
原帖由 fangzhang 于 2006-2-17 17:15 发表
书后面的附录里也有这些的


说的就是书后的不完整。这位肯定是没仔细看书。
作者: liuyishao    时间: 2006-02-17 18:18
原帖由 colddawn 于 2006-2-17 17:17 发表


说的就是书后的不完整。这位肯定是没仔细看书。






欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2