Unix——《Unix網路程式設計》配置unp.h標頭檔案
阿新 • • 發佈:2019-01-05
《Unix網路程式設計 卷1》unp.h 標頭檔案及其編譯問題
本書原始碼下載地址 http://www.unpbook.com
解壓tar -zxvf unpv13e.tar.gz
其實各個編譯過程都在README中,下面給出正確的編譯過程
首先進行編譯
在目錄 unpv13e下依次執行以下步驟:
./configure
cd lib
make
cd ../libfree
make
cd ../libroute
make //這一步可能會出錯,可忽略,只是表示你的系統不支援 4.4BSD,並不影響對該書的學習
cd ../libgai
make
將生成的 libunp.a 靜態庫複製到/usr/lib/ 和 /usr/lib64/ 中。
cd .. //回到 unpv13e 目錄
sudo cp libunp.a /usr/lib
sudo cp libunp.a /usr/lib64
修改 unp.h 並將其和 config.h 拷貝到 /usr/include 中。
vim lib/unp.h //將 unp.h 中#include "../config.h"修改為#include "config.h"
sudo cp lib/unp.h /usr/include
sudo cp config.h /usr/include
編譯書本例子。注意:編譯時必須加上靜態連結庫:-l 引數加上 libunp.a 去掉lib和後面的.a。最後得到引數-lunp
cd ./intro
gcc daytimetcpcli.c -o daytimetcpcli -lunp
測試上面生成的可執行檔案獲取本機當前日期:
./daytimetcpcli 127.0.0.1
在進行測試時會出現以下錯誤:
connect error:Connection refused
以下通過 xinetd 開啟 daytime 服務程式。
其實這個是因為xinetd服務沒有啟動,如果沒有安裝,在root下
要先安裝 sudo apt-get install xinetd
然後
cd/etc/xinetd.d/
vim daytime
將 daytime 檔案中的兩個 disable = yes修改成 disable = no,並儲存退出,然後重啟 xinetd;執行/etc/init.d/xinetd restart
再次測試書本上的第一個例子:此時可以正確獲取本機的當前日期;
unpv13e/intro$ ./daytimetcpcli 127.0.0.1
09 DEC 2014 18:45:57 CST