文章目录
一、前言
学习《UNIX环境高级编程》的所有例程代码之前,必须先解决头文件apue.h的问题。头文件apue.h几乎在整本书的所有程序上都出现了。
思路大概是这样的:
1、首先从官网下载的源代码上找到apue.h与error.c,接着稍微修改一下apue.h。
2、gcc编译器在MacOS系统下的头文件路径在哪里。
废话不说,开始解决这个问题吧。
二、下载与修改apue.h文件
2.1、官网http://www.apuebook.com/apue3e.html
进入官网后,找到Source Code。
找到download here,下载并解压源代码src.3e.tar.gz
2.2、源代码apue.3e
2.3、修改apue.h文件
三、gcc编译器的头文件路径
echo | gcc -v -x c -E -
从上图看到,gcc编译器的include <…> 头文件的搜索路径有4个。从我的实验看来,选择第三个就可以了。所以后续只需要将apue.h与error.c文件放入Mac OS根目录下的/Library/Developer/CommandLineTools/usr/include
四、将apue.h与error.c复制过去
首先,打开Mac的终端,使用cd指令进入目录/Library/Developer/CommandLineTools/usr/include
使用sudo cp指令将apue.h与error.c复制到目录/Library/Developer/CommandLineTools/usr/include
接着,使用ls -l指令查看apue.h与error.c是否真的被复制过去。
五、编译例程代码
5.1、1-4的代码
#include <apue.h>
#include <errno.h>
#define BUFFSIZE 4096
int
main()
{
int n;
char buf[BUFFSIZE];
while((n = read(STDIN_FILENO,buf,BUFFSIZE)) > 0)
{
if(write(STDOUT_FILENO,buf,n) != n)
{
err_sys("write error");
}
}
if(n < 0)
{
err_sys("read error");
}
}
5.2、使用gcc编译代码,并执行代码
1-4例程的代码目的是在终端里输入字符串,终端就会返回字符串。比如输入字符串”hello,world”,接着终端就会输出字符串”hello,world”。