UNIX環境高級編程 源代碼編譯apue.h頭文件的問題

從網站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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章