UNIX环境高级编程(第三版)中的例子用到apue.h这个头文件,但是书里面写的地址已经不能访问。

经过一番查找之后,找到如下解决方案:

1、到www.apuebook.com上下载第2版的源码,也可以直接点这里

2、下载后的源码,需要修改一下:

    1、Make.defines.linux中第6行WKDIR=/home/sar/apue.2e更改为目录的绝对路径。

    2、apue.2e/ipp/ipp.h中第122行中的status换为Status。(也可换为其他,但要与下面对应)

    3、apue.2e/ipp/printd.h中第977行中的status替换为Status。(与上面对应)

    4、apue.2e/threadctl/getenv1.c和/root/apue.2e/threadctl/getenv3.c中第1行#include <limits.h>更换为#include <linux/limits.h>

3、在apue.2e目录执行make命令进行编译。如果编译通过,会在apue.2e/lib/目录下生成libapue.a静态链接库文件。

4、apue.2e/lib/libapue.a拷贝至/usr/local/lib/目录下。

5、apue.2e/include/apue.h拷贝至/usr/local/include/目录下。

6、完成,但编译时要加上-lapue指令,例如编译test.c文件,执行:gcc test.c -lapue

补充说明:程序里面的err_quit,err_sys等等函数在apue.2e/lib/error.c中, error.c 实现apue.h中的出错处理函数。

当然,如果按照上面的步骤制作了libapue.a库的话,不需要单独包含error.c

UNIX环境高级编程(第三版)关于apue.h的用法的更多相关文章

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

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

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

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

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

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

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

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

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

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

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

    本文转载自:http://blog.csdn.net/hadas_wang/article/details/43203795 1. 下载代码:http://www.apuebook.com/code3 ...

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

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

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

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

  9. 《UNIX环境高级编程》源码配置——apue.3e 安装

    转载从:http://blog.csdn.net/songshimvp1/article/details/51440545 网上大都是针对UNIX高级编程第二版的头文件搭建,现在对于第三版来说有些过时 ...

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

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

随机推荐

  1. 30款免费的手机UI设计资源

    在 原型设计阶段,我们会尽量寻找一些灵感刺激大脑,从而让我们的想象力飞-灵感给了我们很好的开始,但是当我们把灵感化为现实的时候,又需要一些实用而又高 效的组件来完成.即使你有非常善于把灵感实例化在草稿 ...

  2. Hive Python Streaming的原理及写法

    在Hive中,须要实现Hive中的函数无法实现的功能时,就能够用Streaming来实现. 其原理能够理解成:用HQL语句之外的语言,如Python.Shell来实现这些功能,同一时候配合HQL语句, ...

  3. 代理(Proxy)模式简介

    一.代理(Proxy)模式简介 代理模式是结构型模式. 代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用. 代理对象要继承于抽象主题,并控制原对象的引用 二.简单例子 抽象主题类 ...

  4. Java从零开始学四十(反射简述一)

    一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...

  5. jquery插件开发通用框架

    2017-07-24 更新:增加单例模式. jquery插件开发框架代码: /* * 插件编写说明: * 1.插件命名:jquery.[插件名].js,如jquery.plugin.js * 2.对象 ...

  6. SQLite的升级(转)

    做Android应用,不可避免的会与SQLite打交道.随着应用的不断升级,原有的数据库结构可能已经不再适应新的功能,这时候,就需要对SQLite数据库的结构进行升级了. SQLite提供了ALTER ...

  7. libevent个人理解

    1.利用了前置声明来在c语言的基础上进行封装操作.即在include目录下防止event.h等头文件,在这些头文件中只暴露struct的声明却不暴露其定义,对于如event_base等结构的操作均使用 ...

  8. Debian GNU Linux服务列表的获取、服务的关闭/开启、服务在启动时是否自己主动执行的生效/失效

    /*********************************************************************  * Author  : Samson  * Date   ...

  9. 坦克大战-C语言-详注版

    代码地址如下:http://www.demodashi.com/demo/14259.html 坦克大战-C语言-详注版 概述 本文详述了C语言版坦克大战游戏的原理以及实现方法,对游戏代码进行了详细的 ...

  10. 【laravel54】详解中间件

    1.中间件定义:对http请求进行一层过滤,通过过滤才能继续执行请求 2.中间件方法handle方法参数详解: 其中参数的形式可以有多个,使用[,]进行分割. 3.路由中使用中间件: 3.1 中间件使 ...