從網站http://www.apuebook.com/
1)下載下傳《UNIX環境進階程式設計》原代碼src.tar.gz
2)用指令tar -xvf src.tar.gz 解壓,産生apue.2e檔案夾
3)執行make
通常會出現編譯不過的情況。
[分析]:
提示 "錯誤:apue.h:沒有那個檔案或目錄".
apue.h是作者自定義的一個頭檔案,包括程式所需的常用頭檔案及出錯處理函數。
是以因該将它放入系統頭檔案中(Linux下是 /usr/include),這樣gcc編譯器就可以找到它了。
[解決]:
1)修改 Make.defines.linux中的WKDIR=/home/xxx/apue.3e,為WKDIR=/home/user/apue.2e,這就是我們将要make的工作目錄
2)然後再進入std目錄,用vi或者gedit打開linux.mk,将裡面的nawk全部改為awk,vi可以使用這個指令 :%s/nawk/awk/g (注意前面有冒号)
:wq!儲存,退出
3)然後 make
...
4)複制相關頭檔案
1. 超級使用者權限登入 #cd /usr/include
2. 将apue.h和error.c兩個檔案copy到該目錄下。
(apue.h位于 /inlcude ; error.c位于/lib )
以我的了路徑為例:
#cp /apue.3e/inlcude/apue.h /usr/include.
#cp /apue.3e/lib/error.c /usr/include. (實作apue.h中的出錯處理函數)
5)編輯apue.h
#vi apue.h
在最後一行 #endif 前面添加一行 #include "error.c"
:wq 儲存,退出.
這樣你就“享受”你下載下傳的apue程式了.
在編譯其他檔案如ls1.c時出現了
[email protected]:~/桌面/apue.2e/file$ gcc -o ls1 ls1.c
/tmp/cciUZ4Ir.o:在函數‘main’中:
ls1.c:(.text+0x20):對‘err_quit’未定義的引用
ls1.c:(.text+0x5b):對‘err_sys’未定義的引用
要将apue.3e/lib/error.c 複制到/usr/local/include
要将apue.3e/include/apue.h 複制到/usr/local/include
參考網址:http://blog.csdn.net/qq_26437925/article/details/51381600