《unix环境高级编程 》第三版学习

apue.h头文件错误参考网址
http://www.linuxidc.com/Linux/2013-01/77467.htm
注意点:

  • 按要求解压到/root目录
    tar -xzvf src.tar.gz -C /root
  • 上面网址的第4点(将/root/apue.2e/ipp/printd.h中第977行中的status替换为Status。)
    没有printd.h文件 是printd.c文件

按要求即可编程测试
例如下面的打印进程ID,pid.c

#include <apue.h>
int main(void)
{
    printf("process id : %ld\n", (long)getpid());
    exit(0);
}

gcc -o pid pid.c 编译链接,运行即可

这里写图片描述

在编译其他文件如ls1.c时出现了
ding@ding-Lenovo-G480:~/桌面/apue.2e/file$ gcc -o ls1 ls1.c
/tmp/cciUZ4Ir.o:在函数‘main’中:
ls1.c:(.text+0x20):对‘err_quit’未定义的引用
ls1.c:(.text+0x5b):对‘err_sys’未定义的引用

参考网址
http://blog.sina.com.cn/s/blog_6e27e6f10100w234.html
不同的是 要将apue.2e/lib/error.c 复制到/usr/local/include,再按要求修改
这里写图片描述
ls1.c文件内容如下:

#include "apue.h"
#include <dirent.h>

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

    if (argc != 2)
        err_quit("usage: ls directory_name");

    if ((dp = opendir(argv[1])) == NULL)
        err_sys("can't open %s", argv[1]);
    while ((dirp = readdir(dp)) != NULL)
        printf("%s\n", dirp->d_name);

    closedir(dp);
    exit(0);
}

这里写图片描述

Logo

更多推荐