《UNIX 環境高級編程》源代碼在Linux環境運行方法

以下是在網上找到的修改教程,感謝原作者,按以下步驟嘗試一遍就通了,文章後記錄嘗試過程中的一些經驗,算是防止健忘吧。

《UNIX 環境高級編程》每個歷程中,都會有這樣一行:
#include "apue.h"
這個頭文件是作者把把每個例程中常用的標準頭文件,一些常用的出錯處理函數(err_**()之類的函數)和一些常用的宏定義給整理在一個頭文件中。這個可以省去在每個例程中錄入較多的重複代碼,這樣可以減少每個例程的長度。給讀者帶來了不少麻煩。下面給出一種代碼的編譯方法。

 

1、解壓文件到apue.2e目錄
2、修改相應平臺的文件,我使用的是linux,所以修改Make.defines.linux
你修改的只需要這一行WKDIR=/home/your_dir/apue2e_src/apue.2e,改成自己的目錄路徑
3、cd到apue.2e目錄執行make,之後你會在lib目錄下面找到libapue.a 這個文件.
現在,你可以把它拷貝到你能尋找的地方,在編寫例子的時候,你就可以

4、拷貝apue2e_src/apue.2e/include/apue.h和apue2e_src/apue.2e/lib/libapue.a

到你的代碼目錄。

5、使用gcc -o hello hello.c libapue.a來編譯你的代碼

——————————————————————————————

照着做,然後make一下,最後報錯,大概原因是找不到nawk命令。貌似linux下沒有這命令。查到這命令出現在apue.2e/std/linux.mk文件中,試着把nawk換成gawk,再make clean一下,重新make,編譯通過了。

我使用下面命令編譯源程序:

  gcc -o myls ls1.c -I../include ../lib/libapue.a

——————————————————————————————

gawk命令:

gawk ( GNU awk )工具是一種模式掃描和處理語言,它搜索一個或多個文件,以查看這些文件中是否存在匹配指定模式的記錄(通常是文本)。每次發現時,它通過執行動作的方式處理文本。使用 gawk 可以生成報告或者過濾文本, gawk 的很多結構來自 C 語言。

Gawk 工具是 UNIX awk 的 GNU 版。爲了方便起見,很多 linux 系統將 /bin/awk 鏈接到 /bin/gawk ,這樣用戶可以使用兩者中的任何一個來運行程序。

/////////////////////////////////////////////////////////////////////////////////////////////////////////

1.在第二個步驟中要apue.2e中修改Make.defines.linux,但一開始找不到這個文件。原因很簡單:找錯代碼了...重下個。

2.第四個步驟中拷貝 /apue.2e/include/apue.h和/apue.2e/lib/libapue.a到你的代碼目錄。就可以解決找不到源函數的問題。其中/apue.2e下的一大堆fig*就是書中的示例代碼。fig1.3是第一個源碼。

3.在執行#gcc -o test1 fig1.3 libapue.a 編譯時會出現File format not recognized:文件類型顯示不正確的錯誤。只要修改fig1.3名字就OK。

執行命令:#cp fig1.3 sample13.c

#gcc -o test1 sample13.c libapue.a 就編譯成功了!


本篇文章來源於 Linux公社網站(www.linuxidc.com)  原文鏈接:http://www.linuxidc.com/Linux/2011-04/35298.htm

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