本文转载自:http://blog.csdn.net/hadas_wang/article/details/43203795

1. 下载代码:http://www.apuebook.com/code3e.html

2. 安装依赖库:sudo apt-get install libbsd-dev 

3. 进入下载目录make

4. 复制头文件和动态链接库

  1. sudo cp ./include/apue.h /usr/include/
  2. sudo cp ./lib/libapue.a /usr/local/lib/
  3. sudo cp ./lib/libapue.a /usr/lib/

5. 设置错误文件error.h

  1. #include "apue.h"
  2. #include <errno.h>      /* for definition of errno */
  3. #include <stdarg.h>     /* ISO C variable aruments */
  4. static void err_doit(int, int, const char *, va_list);
  5. /*
  6. * Nonfatal error related to a system call.
  7. * Print a message and return.
  8. */
  9. void err_ret(const char *fmt, ...)
  10. {
  11. va_list     ap;
  12. va_start(ap, fmt);
  13. err_doit(1, errno, fmt, ap);
  14. va_end(ap);
  15. }
  16. /*
  17. * Fatal error related to a system call.
  18. * Print a message and terminate.
  19. */
  20. void err_sys(const char *fmt, ...)
  21. {
  22. va_list     ap;
  23. va_start(ap, fmt);
  24. err_doit(1, errno, fmt, ap);
  25. va_end(ap);
  26. exit(1);
  27. }
  28. /*
  29. * Fatal error unrelated to a system call.
  30. * Error code passed as explict parameter.
  31. * Print a message and terminate.
  32. */
  33. void err_exit(int error, const char *fmt, ...)
  34. {
  35. va_list     ap;
  36. va_start(ap, fmt);
  37. err_doit(1, error, fmt, ap);
  38. va_end(ap);
  39. exit(1);
  40. }
  41. /*
  42. * Fatal error related to a system call.
  43. * Print a message, dump core, and terminate.
  44. */
  45. void err_dump(const char *fmt, ...)
  46. {
  47. va_list     ap;
  48. va_start(ap, fmt);
  49. err_doit(1, errno, fmt, ap);
  50. va_end(ap);
  51. abort();        /* dump core and terminate */
  52. exit(1);        /* shouldn't get here */
  53. }
  54. /*
  55. * Nonfatal error unrelated to a system call.
  56. * Print a message and return.
  57. */
  58. void err_msg(const char *fmt, ...)
  59. {
  60. va_list     ap;
  61. va_start(ap, fmt);
  62. err_doit(0, 0, fmt, ap);
  63. va_end(ap);
  64. }
  65. /*
  66. * Fatal error unrelated to a system call.
  67. * Print a message and terminate.
  68. */
  69. void err_quit(const char *fmt, ...)
  70. {
  71. va_list     ap;
  72. va_start(ap, fmt);
  73. err_doit(0, 0, fmt, ap);
  74. va_end(ap);
  75. exit(1);
  76. }
  77. /*
  78. * Print a message and return to caller.
  79. * Caller specifies "errnoflag".
  80. */
  81. static void err_doit(int errnoflag, int error, const char *fmt, va_list ap)
  82. {
  83. char    buf[MAXLINE];
  84. vsnprintf(buf, MAXLINE, fmt, ap);
  85. if (errnoflag)
  86. snprintf(buf+strlen(buf), MAXLINE-strlen(buf), ": %s",
  87. strerror(error));
  88. strcat(buf, "\n");
  89. fflush(stdout);     /* in case stdout and stderr are the same */
  90. fputs(buf, stderr);
  91. fflush(NULL);       /* flushes all stdio output streams */
  92. }

6. 注销,重启

7. 代码文件

    1. #include "apue.h"
    2. #include "error.h"

Linux - Unix环境高级编程(第三版) 源代码编译(即头文件apue.h如何使用问题)【转】的更多相关文章

  1. Linux - Unix环境高级编程(第三版) 代码编译

    Unix环境高级编程(第三版) 代码编译 本文地址:http://blog.csdn.net/caroline_wendy 时间:2014.10.2 1. 下载代码:http://www.apuebo ...

  2. 【转】apue《UNIX环境高级编程第三版》第一章答案详解

    原文网址:http://blog.csdn.net/hubbybob1/article/details/40859835 大家好,从这周开始学习apue<UNIX环境高级编程第三版>,在此 ...

  3. Unix环境高级编程第三版中实例代码如何在自己的linux上运行的问题

    学习Linux已经有2个月了,最近被期末考试把进度耽误了,前几天把Unix环境高级编程看了两章,感觉对Linux的整体有了一些思路,今天尝试着对第一章涉及到的一个简单的交互式shell编译运行一下,结 ...

  4. APUE(unix环境高级编程)第三版---first day---部署书中实例的运行环境(apue.h)

    操作环境:RHEL7.0 部署apue.h实例运行环境 1.下载头文件src.3e.tar.gz 2.解压 tar zxvf src.3e.tar.gz 3.创建普通用户(我仿照书上创建的sar用户) ...

  5. 《UNIX环境高级编程第三版》apue.h等源码文件的编译安装

    操作系统:Ubuntu 12/14 1.下载书中的源代码:点击下载 2.编译 tar -zxvf *.tar.gz cd ./apue.3e make 报错: can,t find -lbsd 解决办 ...

  6. 《UNIX环境高级编程(第3版)》

    <UNIX环境高级编程(第3版)> 基本信息 原书名:Advanced Programming in the UNIX Environment (3rd Edition) (Addison ...

  7. unix环境高级编程第三章笔记

    文件描述符 1.文件描述符的概念 对于内核而言,所有打开的文件都会用一个文件描述符来引用,打开或和创建一个新文件的时候,内核会给进程返回一个文件描述符,而当使用read write时,可以使用这个文件 ...

  8. UNIX环境高级编程-第三章习题

    1,当读写磁盘文件时,read,write等函数确实是不带缓冲机制的吗?请说明原因. 答:所有磁盘I/O都要经过内核的块缓存区(即内核的缓冲区高速缓存).唯一例外的是对原始磁盘设备的I/O,但是我们不 ...

  9. 《UNIX环境高级编程 第2版》读书笔记

    CH1-2:基础知识.标准化 1 文件和目录 文件名:不能含/(分隔路径)和null(终止路径),255字符. 目录处理:opendir() readdir() closedir() 更改工作目录:c ...

随机推荐

  1. Java 基础【05】你的多继承纳?

    Java省略了许多很少用到,缺乏了解,混淆功能的C + +,在我们的经验中带来更多的悲伤大于收益 . -----James Gosling James Gosling 这个人大家应该很熟悉,就是最初设 ...

  2. Codechef Black Nodes in Subgraphs(树型背包)

    题目链接 Black Nodes in Subgraphs 题目意思就是在一棵树中所有点标记为两种颜色(黑和白) 然后询问是否存在大小为X恰好有Y个黑点的连通块 这题我们可以用树型背包的方法 设$f[ ...

  3. 思科CCIE全新升级,SDN/SD-WAN成重头戏!

    CCIE,全称Cisco Certified Internetwork Expert,是美国Cisco公司于1993年开始推出的专家级认证考试.被全球公认为IT业最权威的认证,是全球Internetw ...

  4. 2017-11-07-noip模拟题

    T1 数学老师的报复 矩阵快速幂模板,类似于菲波那切数列的矩阵 [1,1]*[A,1 B,0] #include <cstdio> #define LL long long inline ...

  5. python 常用库, 随时添加中

    python只有你想不到的库,只要你能想到,肯定有对应的库 前面*的为标准库,**的是pip里面的,***则是要手动安装的1)python运行时服务* copy: copy模块提供了对复合(compo ...

  6. 自签名证书安全性问题研究https(ssl)

    先看下https(ssl)的好处,以及为什么要用: http://imweb.io/topic/565c71673ad940357eb99879 https://zh.wikipedia.org/wi ...

  7. python--文本处理1

    1.字符和字符值之间的转换 内建函数:ord(),chr() >>> print ord("a") 97 >>> print chr(97) a ...

  8. Python爬虫之路——简单网页抓图升级版(添加多线程支持)

    转载自我的博客:http://www.mylonly.com/archives/1418.html 经过两个晚上的奋斗.将上一篇文章介绍的爬虫略微改进了下(Python爬虫之路--简单网页抓图),主要 ...

  9. Unity3D:Gizmos画圆(原创)

    Unity3D引擎技术交流QQ群:[21568554] Gizmos是场景视图里的一个可视化调试工具. 在做项目过程中.我们常常会用到它,比如:绘制一条射线等. Unity3D 4.2版本号截至.眼下 ...

  10. ListView 自己定义BaseAdapter实现单选打勾(无漏洞)

    (假设须要完整demo,请评论留下邮箱) (眼下源代码已经不发送.假设须要源代码,加qq316701116.不喜勿扰) 近期由于一个项目的原因须要自己定义一个BaseAdapter实现ListVIew ...