原文鏈接:http://www.linuxdiyf.com/bbs/thread-90655-1-8.html
首先需要make一次源代碼
編輯源碼解壓生成的apue.2e文件夾下的Make.defines.linux
修改WKDIR=/home/var/apue.2e爲你的apue.2e目錄,比如我的apue源碼解壓在/usr/local,那我就改爲:
WKDIR=/usr/local/apue.2e
然後進入apue.2e/std 目錄,編輯linux.mk。修改裏面所有的nawk爲awk。
最後返回apue.2e目錄,執行make命令。
以下是編譯源碼時的錯誤提示跟解決方法(假定你的工作目錄跟我的一樣,爲/usr/local/apue.2e)
錯誤提示1:
myls.c:1:19: apue.h: No such file or directory
myls.c: In function `main':
myls.c:13: error: `NULL' undeclared (first use in this function)
myls.c:13: error: (Each undeclared identifier is reported only once
myls.c:13: error: for each function it appears in.)
解決辦法:
拷貝apue.h到系統默認頭文件目錄中
$cp /usr/local/apue.2e/include/apue.h /usr/include
錯誤提示2:
/tmp/ccBBopm0.o(.text+0x2b): In function `main':
: undefined reference to `err_quit'
/tmp/ccBBopm0.o(.text+0x5f): In function `main':
: undefined reference to `err_sys'
collect2: ld returned 1 exit status
解決辦法:
err_quit跟err_sys是作者自己定義的錯誤處理函數,需要單獨定義頭文件
在/usr/include 下新建一個名爲myerr.h的文件
拷貝下邊的內容到myerr.h(其實此頭文件在原書的附錄B中)
|
然後在你需要使用這幾種錯誤處理函數的程序源代碼里加入:
#include <myerr.h>