天天看點

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時出現了 

[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

繼續閱讀