APUE全称《Advanced Programming in the UNIX Environment》(UNIX环境高级编程)

书中例子大都使用作者自己写的头文件,所以需要解决一下,还好学习这本书的前辈还是很多的。所以还是记录一下解决过程吧,方便以后配置。

APUE源码下载:http://www.apuebook.com/ (选择书的版本,然后Source Code)

(一)解压缩

如这样的路径:/home/sincere/work/c/UNIX-C/apue.2e

(二)修改文件

将apue.2e目录下的文件Make.defines.linux中的 WKDIR后面路径改为如上路径

进入apue.2e目录下的std目录,将linux.mk文件里面的nawk全部替换为awk

(三)排错

1,没有stropts.h

[code]
catgetmsg.c:2:21: 致命错误:stropts.h:没有那个文件或目录
编译中断。<br />make[2]: *** [catgetmsg] 错误 1
make[2]: 离开目录“/home/sincere/apue.2e/advio”
make[1]: *** [linux] 错误 1
make[1]: 离开目录“/home/sincere/apue.2e”
make: *** [all] 错误 2
[/code]

如果出现stropts.h找不到的情况,则下载glibc-2.11,解压缩
cp ./glibc-2.11/streams/stropts.h /usr/include
cp ./glibc-2.11/bits/stropts.h /usr/include/bits
cp ./glibc-2.11/sysdeps/x86_64/bits/xtitypes.h /usr/include/bits

2. apue.2e/ipp/ipp.h 出现宏定义:#define status u.st

编译出现错误提示:expected ':', ',', ';', '}' or '__attribute__' before '.' token

解决方案:将apue.2e/ipp/ipp.h的宏定义:#define status u.sth中的status改成Status;然后将同目录下的printd.c中的977行的i=ntohs(hp->status);中的status改成Status。

3.提示ARG_MAX未定义

解决方案:在apue.2e/include/apue.h中添加一行:#define ARG_MAX 4096;打开apue.2e/threadctl/getenv1.c和apue.2e/threadctl/getenv3.c,添加一行:#include "apue.h"

解决上面的三个问题后,就可以编译通过了

(四)头文件和静态库的使用

复制/apue.2e/include/apue.h和/apue.2e/lib/libapue.a到你的源代码目录

然后运行

[code]gcc -o hello hello.c libapue.a[/code]

OK!问题解决,可以继续学习APUE了~~

参考文章:

《unix环境高级编程》书中源代码编译问题解决

如何使用APUE源代码(UNIX高级编程)

UNIX环境高级编程中的apue.h错误

APUE学习笔记(1):APUE运行环境的更多相关文章

  1. APUE学习笔记——10.9 信号发送函数kill、 raise、alarm、pause

    转载注明出处:Windeal学习笔记 kil和raise kill()用来向进程或进程组发送信号 raise()用来向自身进程发送信号. #include <signal.h> int k ...

  2. APUE学习笔记3_文件IO

    APUE学习笔记3_文件IO Unix中的文件IO函数主要包括以下几个:open().read().write().lseek().close()等.这类I/O函数也被称为不带缓冲的I/O,标准I/O ...

  3. Kettle学习笔记(一)— 环境部署及运行

    目录 Kettle学习笔记(一)-环境部署及运行 Kettle学习笔记(二)- 基本操作 kettle学习笔记(三)- 定时任务的脚本执行 Kettle学习笔记(四)- 总结 Kettle简介 Ket ...

  4. ESP32学习笔记(一) 环境搭建与下载

    ESP32学习笔记(一) 环境搭建与下载 作者:Nevel 博客:nevel.cnblogs.com 转载请保留出处 前几天刚入手了ESP32模块,趁着放假有时间,我们先把ESP32的编译环境搭建好 ...

  5. Hadoop学习笔记(4) ——搭建开发环境及编写Hello World

    Hadoop学习笔记(4) ——搭建开发环境及编写Hello World 整个Hadoop是基于Java开发的,所以要开发Hadoop相应的程序就得用JAVA.在linux下开发JAVA还数eclip ...

  6. Flutter学习笔记(1)--环境安装

    flutter最近显得格外的火,公司的同事也一直在谈论flutter,感觉自己不学学就要失业了...所以决定顺应潮流学习以下flutter,做一下学习笔记,希望可以给需要的同学带来一些帮助~ 正文为f ...

  7. TensorFlow学习笔记0-安装TensorFlow环境

    TensorFlow学习笔记0-安装TensorFlow环境 作者: YunYuan 转载请注明来源,谢谢! 写在前面 系统: Windows Enterprise 10 x64 CPU:Intel( ...

  8. python学习笔记-python程序运行

    小白初学python,写下自己的一些想法.大神请忽略. 安装python编辑器,并配置环境(见http://www.cnblogs.com/lynn-li/p/5885001.html中 python ...

  9. Solr学习笔记之1、环境搭建

    Solr学习笔记之1.环境搭建 一.下载相关安装包 1.JDK 2.Tomcat 3.Solr 此文所用软件包版本如下: 操作系统:Win7 64位 JDK:jdk-7u25-windows-i586 ...

  10. Java学习笔记【一、环境搭建】

    今天把java的学习重新拾起来,一方面是因为公司的项目需要用到大数据方面的东西,需要用java做语言 另一方面是原先使用的C#公司也在慢慢替换为java,为了以后路宽一些吧,技多不压身 此次的学习目标 ...

随机推荐

  1. SQL入门学习1-查询基础

    2-1 SELECT语句基础 SELECT语句作用 SELECT 语句用于从表中选取数据. 结果被存储在一个结果表中(称为结果集). 重点 使用SELECT语句从表中选取数据. 为列设定显示用的别名 ...

  2. 从JAR包中如何读取数据文件

    还不是很懂.....待总结......

  3. R语言做文本挖掘 Part5情感分析

    Part5情感分析 这是本系列的最后一篇文章,该.事实上这种单一文本挖掘的每一个部分进行全部值获取水落石出细致的研究,0基础研究阶段.用R里面现成的算法,来实现自己的需求,当然还參考了众多网友的智慧结 ...

  4. scala 101

    * scala 安装: 下载可以执行的文件. 注意版本.  spark 0.8.0 对应的scala 为2.9.3 * scala 编译: 和java 很像: 1,  直接编译脚本: scalac H ...

  5. 优秀团队建设--美国式团队(ppt)

    美国式团队 一.团队精神 团队精神反映一个人的素养.一个人的能力,一个人与别人合作的精神和能力.一个团队是个有机的总体,作为个人,仅仅有全然融入到这个有机总体之中,才干最大限度地体现自己的价值. 团队 ...

  6. C++定义自己的命名空间和头文件

    下面的例子演示如何使用一个简单的演示空间和自己的头文件定义.码如下面: compare.h: namespace compare{ double max(const double* data,int ...

  7. 于ios7在遇到一些发展deprecated问题

    cell.textLabel.textAlignment = UITextAlignmentCenter; 现在我想写cell.textLabel.textAlignment =NSTextAlign ...

  8. android layout物业介绍

    android:id 为控件指定对应的ID android:text 指定控件其中显示的文字,须要注意的是,这里尽量使用strings.xml文件其中的字符串 android:gravity 指定Vi ...

  9. JavaScript编写了一个计时器

    初学JavaScript,用JavaScript编写了一个计时器. 设计思想: 1.借助于Date()对象,来不断获取时间点: 2.然后用两次时间点的毫秒数相减,算出时间差: 3.累加时间差,这样就能 ...

  10. linux_ Redhat Linux配置JDK和Tomcat需要注意的地方

    转:http://blog.csdn.net/hongdi/article/details/10525797 1.操作系统和安装包操作系统:Redhat Linux 6.4服务器版,桌面安装JDK:j ...