转载:unix环境高级编程编译方法 -apue最简单编译方法(第二版),http://www.cnblogs.com/gaojunling/articles/1237611.html 一直以来参考的学习linux函数的书籍,初学时尝试使用其代码示例,但总会被其通用的头文件找不到而影响。当时也有尝试去编译,但好像出了一些问题,就放弃掉了。 今天打算深入探究一下,编译出错后就在网上找到了办法,http://www.cnblogs.com/gaojunling/articles/1237611.html,讲得很清楚,收藏!! 我是用其第二种方法,将nawk命令改为awk而编译OK的!内容如下: 1.首先粗略的看了一下makefile的内容,make首先会执行脚本文件systype.sh,判断所用系统的类型,然后根 据该类型选择对应的Make.defines文件.这里所要做的就是给systype.sh添加执行权限,chmod u+x systype.sh 2.因为我用的是Linux,所以先看Make.defines.linux,需要修改的地方是WKDIR=/home/sar/apue.2e,把WKDIR 改为你自己的工作目录,在我这就是改为WKDIR=/home/se/apue.2e,这个路径在编译时寻找"apue.h"头文件时 使用. 3.然后我尝试性的运行了一次make,果然有问题,在进入std目录后报错了,说找不到nawk命令,nawk是new awk,而我的系统上只有awk,这时你有两种选择,可以在运行make之前执行alias nawk='awk',这样本质上是给 awk取了个叫nawk的别名,实际上运行的还是awk,另一种方法就是修改WKDIR/std /linux.mk,把第10行和15行 中的nawk都改为awk,至于什么是awk和nawk,以及它们的使用方法可以参考我之前收藏的一篇文章 http://www.360doc.com/showWeb/0/0/308938.aspx 在这里,awk用来分别从makeconf.awk和makeopt.awk生成conf.c和options.c源文件,注意,在修改了linux.mk 或是添加了alias之后要先把之前make失败时生成的conf.c和options.c删除,否则会报错 4.进行了上述的修改后,回到WKDIR,运行make,ok,没有报错,编译成功了