看unix高级编程时遇到apue.h找不到的问题

一开始看到这本书,刚翻了几页,就觉得对味。按照书中的代码做练习时,编译代码文件提示fatal error: apue.h: No such file or directory。翻看书的附录B,可以看到apue.h的资料,原来作者是为了减少书中示例代码的长度,将很多包含头文件的代码封装到了apue.h 这个文件。

下载源码

从unix高级编程书籍官网下载书籍的上的所有源码。

wget http://www.apuebook.com/src.tar.gz

解压这个文件

tar -zxvf src.tar.gz

解压后文件会放在apue.2e目录下,这个目录里包含了书本上的源码,也包含了apue.h和error.c文件。

复制apue.h到/usr/include/下

cp ./apue.2e/include/apue.h /usr/include/

/usr/include/下并没有这个文件,所以放心复制吧。

复制error.c到/usr/include/下

cp ./apue.2e/lib/error.c /usr/include/

这里的文件是error.c,不是error.h,/usr/include/目录下有一个error.h的头文件。

编辑/usr/include/apue.h文件

在文件最后#endif前加上包含error.c的代码:

#include "error.c";

弄完之后重新编译代码文件,OK搞定了。如果需要了解更多信息,可以查看apue.2e目录下的README文档。unix发展到后来延伸出很多分支,在 书中也有提及,如果你对自己的系统不了解,可以运行apue.2e目录下的systype.sh,它会告诉你你的系统是什么。

时间: 2024-12-28 00:54:39

看unix高级编程时遇到apue.h找不到的问题的相关文章

UNIX 高级编程(第二版) apue.h配置问题

在第二版的UNIX高级编程中,apue.h头文件下载后,编译过程中出现无法编译的问题,解决方法如下: 在http://www.apuebook.com/下载src.tar.gz源代码的压缩包. 1.解压至/home/user/目录下 2.修改 Make.defines.linux中的WKDIR=/home/xxx/apue.2e,为WKDIR=/home/user/apue.2e 3.返回至apue.2e目录下面,修改linux.mk,将里面的nawk全部改为awk,可以使用这个命令 :%s/n

unix高级编程中的一个头文件 apue.h 与一个差错文件error.c 的内容

在查看unix高级编程中的代码时,如果我们编写书中的代码,发现一般都会报错,这是因为作者在写这本书时,他自己编写了一个头文件,跟一个差错处理文件,出来处理他自己的代码错误信息: 下面我们来看下代码的内容: 我实现第一个代码,关于文件的打开,实现 ls 命令的代码: #include "apue.h"#include <stdio.h>#include <dirent.h> int main(int argc, char *argv[]){ DIR *dp; st

&lt;unix高级编程&gt;笔记 chapter1

os严格上是软件,为计算机提供资源和app运行环境. 特称为内核. 内核的接口被成为system call;然后库函数对system call进行了封装;shell是特殊app,为运行其他程序提供了一个接口. shell是个命令行解释器,读取输入,执行命令. unix文件系统是由directory和file组成.目录起点成为root,名字是/. 文件属性指类型\大小\所有者\权限以及修改时间.stat和fstat返回文件属性的结构. 比如下面操作: 2.文件名 只有/和null不能出现在文件名里

apue.h找不到的解决方案

apue.h找不到的解决方案 2018年08月03日 10:07:31 Tailor_Wu 阅读数:140 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/TailorWu/article/details/81382212 1. 介绍 Advanced Programming in the UNIX Environment_Third Edition(简称APUE)是Stevens编写的unix编程圣经,书上的代码为了保持简洁性,头文件以及必要的

unix环境高级编程编译方法 -apue最简单编译方法(第二版)

<UNIX环境高级编程>(这里使用的是第二版本的源码)每个历程中,都会有这样一行源码: #include "apue.h" 这个头文件是作者把把每个例程中常用的标准头文件,一些常用的出错处理函数(err_**()之类的函 数)和一些常用的宏定义给整理在一个头文件中.这个可以省去在每个例程中录入较多的重复代码,这样可 以减少每个例程的长度.给读者带来了不少麻烦.下面给出一种源代码的编译方法. 1.解压文件到apue.2e目录 2.修改相应平台的文件,我使用的是linux,所以

【UNIX网络编程】配置unp.h和apueerror.h

1.先在官网 http://www.unpbook.com/unpv13e.tar.gz 下载源文件 2.解压:tar -xzvf unpv13e.tar.gz 3.cd unpv13e; ./configure 4.cd lib; make 5.以上生成了libunp.a 的静态库,将生成的静态库复制到系统的库目录中(/usr/lib), cd ..; sudo cp libunp.a /usr/lib/ 6.将unp.h和config.h放入系统的引用目录中,以便快速的引用(注意:confi

Unix高级编程之标准IO

c标准io---带缓存的io 优势: 带缓存(合并系统调用)缺点: 实时性低缓存的类型: 行缓存:stdin stdout(缓存区是有大小) 全缓存:文件 无缓存:stderr 1.流 打开文件的标识 2.FILE类型 结构体类型: 文件描述符 缓存区的地址 缓存的大小 出错标识 3.流的打开 fopen(3); errno全局变量 定义的宏: /usr/include/asm-generic/errno-base.h /usr/include/asm-generic/errno.h strer

unix高级编程阅读

一.进程: fork,exec,waitpid 1.子进程:复制进程的代码与堆栈状态,因此子进程将会从刚执行的指令fork位置继续往下执行. 2.父进程通过waitpid等待子进程完成 二.线程: 1.控制线程:执行指令的线程,多个控制线程可以同一时刻执行指令. 2.线程共享:地址空间,文件描述符,栈,其他(共享数据即非线程函数堆栈内部数据需要同步) 三.unix函数: 1.出错返回负值.

unix高级编程之线程

线程 先有标准,后有实现 POSIX标准 pthread_xxxx(); 一.线程及标识 运行的函数 pthread_t ----> 不能打印 pthread_self(3); pthread_equal(3); ps axm -L 二.线程的创建 pthread_create(3); 三.线程的终止 <1>return <2>pthread_exit(); <3>被cancel <4>任意一个线程调用exit(3),或者main()return(整个