從網站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時出現了
ding@ding-Lenovo-G480:~/桌面/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