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. Office EXCEL 不用VB,你也可以制作自己的Excel菜单!

    还记得这个讨厌的VB吗?为了做一个COM插件,生成一个DLL,麻烦一大堆.其实我们想要的仅仅是把自己写的宏封装一下,更好的调用而已. 打开工具,自定义,在命令菜单中选择新菜单,然后拖放右侧的新菜单到顶 ...

  2. Discuz常见大问题-如何自定义单个页面

    比如我们先做一个最简单的网站的最后一页关于我们(插入了一幅图片,同时加入了几行文字) 先做好两个页面的文件(php页面是负责解析htm页面的,目前这两个页面都是空的) mypage_about.php ...

  3. UITextView自适应高度

    - (float) heightForTextView: (UITextView *)textView WithText: (NSString *) strText{ float fPadding = ...

  4. SSO是什么?

    SSO英文全称Single Sign On,单点登录.SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信仸的应用系统.它包括可以将这次主要的登录映射到其他应用中用亍同一个用户的登录的机制 ...

  5. spring的applicationContext.xml中的DBCP配置如下:

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy ...

  6. vs2017预览版下载

    vs2017预览版,没有限制的不过不能生成生产版本,集成最新的功能! 下载地址: https://www.visualstudio.com/zh-hans/vs/preview/

  7. cocos2dx跟eclipse交叉编译“make: * No rule to make target `all' Stop”的解决方案

    cocos2dx和eclipse交叉编译“make: *** No rule to make target `all'. Stop”的解决方案 搞cocos2dx在eclipse上的交叉编译. 项目. ...

  8. poj 1156 Palindrome

    Palindrome Time Limit: 3000MS   Memory Limit: 65536K Total Submissions: 51631   Accepted: 17768 Desc ...

  9. Matlab 调用Oracle数据库

    本文分两部分,1.通过sql语句操作数据库.2.通过ddl操作数据库 一 通过ODBC实现到oracle的连接1)控制面板->管理工具->ODBC数据源->在系统DSN中添加orac ...

  10. YACC、LEX、JAVACC-------常用的编译工具

    CC(Compiler Compiler) CC的意思就是"编译器的编译器". 你可以定义一种上下文无关文法(CFG),然后针对这个特定的CFG你可以写出一个C程序来解释这种CFG ...