1. 程式人生 > >Unix——《Unix網路程式設計》配置unp.h標頭檔案

Unix——《Unix網路程式設計》配置unp.h標頭檔案

《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