UNIX網(wǎng)絡(luò)編程卷1:unpv13e編譯運(yùn)行(2)

第一:我要說一點,UNIX網(wǎng)絡(luò)編程這本書非常之經(jīng)典,高手必讀系列

第二:就算不讀此系列書籍,你照樣可以做一個應(yīng)用開發(fā)者,但為什么我們要學(xué)此塊知識。這個問題嘛,張無忌為什么學(xué)習(xí)乾坤大挪移等武功都比其他人快且厲害,因為他有高深的九陽神功內(nèi)功

第三:UNIX網(wǎng)絡(luò)編程這本書中的api接口你可能在接下來很長一段時間甚至工作中都見不到,那么我們需要死記嗎?這個問題嘛,重在理解其中原理,先大體調(diào)試幾遍,隨著經(jīng)驗和閱歷的增加你的感受會慢慢加深,選取其中重點的一些接口記憶,其他的知道有這么個東西,使用時查閱即可

第四:如果你碰到真正的計算機(jī)高手,別人肯定會建議你有事沒事看源碼(ps:那些天天嚷著需求最重要,計算機(jī)只是實現(xiàn)工具,模板改改拖一拖控件就可以的人可以靠邊了),而此書,就是看服務(wù)程序源碼的基礎(chǔ)。

第五:接下來要編譯的unpv13e是什么?

unix網(wǎng)絡(luò)編程這本書中的源碼,在學(xué)習(xí)此書之前,我們需要將其下載編譯,便于以后調(diào)試

1.源碼環(huán)境和地址

我采用的是ubuntu14.04?。叮次幌到y(tǒng)

下載地址:http://pan.baidu.com/s/1i44Szzv

或者安裝wget,然后切到~/Downloads/下運(yùn)行 wget http://www.unpbook.com/unpv13e.tar.gz (推薦wget這個工具,很好用)

2.解壓和查看目錄結(jié)構(gòu)

cd ~/Downloads/? //進(jìn)入下載目錄

tar -zxvf unpv13e.tar.gz   //解壓壓縮文件夾

cd unpv13e/???? //進(jìn)入解壓后的文件夾,里面結(jié)構(gòu)顯示如下

unpv13e中包含許多子文件夾,每一個子文件夾都代表一個具體模塊的實例,比如,在intro文件夾中,顯示的是第一章簡介中的所有實例程序集合

3.編譯

編譯unix卷1中的示例源碼時,會碰到一些問題。最大的問題在于平臺的差異(以后碰到再說),以后不管是這個源碼還是其他什么架構(gòu)的安裝,作為一個IT工作者,我們首先要查看其中的說明和文檔,此處查看/unpv13e/ 下的README文件

cd ~/Downloads/unpv13e

vim README,此處給出部分截圖

于是,照著上述步驟,第一步

./configure ,部分截圖如下

那么./configure 這句話到底是什么意思呢? 簡單說來,它就是起到一個檢查和生成的作用。檢查你的系統(tǒng)類型,檢查你的gcc,檢查你的某些頭文件是否存在,檢查某些數(shù)據(jù)類型是否被定義,檢查某些機(jī)制是否存在等,最后會生成makefile文件。

//?build the basic library that all programs need

輸入命令行:

cd lib

make

如果沒有報error,則說明make成功

make具體做了什么呢?查看打印在屏幕上的信息可以發(fā)現(xiàn),對于里面的.c文件都做了類似這樣的操作

gcc -I../lib -g -O2 -D_REENTRANT -Wall?? -c -o connect_nonb.o connect_nonb.c, 主要就是把.c文件都編譯生成了對應(yīng)的目標(biāo)文件。然后ar rv ../libunp.a connect_nonb.o connect_timeo.o ...?? 把所有目標(biāo)文件模塊都?xì)w入libunp.a庫中,以后鏈接此庫時直接 -lunp(體現(xiàn)軟件重用的思想)

接下來

cd ../libfree?     # continue building the basic library

make

碰到問題如下:

解決辦法: vim inet_ntop.c + 60? 定位到函數(shù)頭,修改size_t? 變?yōu)閟ocklen_t類型

然后結(jié)果如下

warning不管,是書籍作者沒有初始化參數(shù)。

接下來

cd ../libroute ? ? ? ? ? ? ? ? ? ? # only if your system supports 4.4BSD style routing sockets

make

發(fā)現(xiàn)缺少頭文件,編譯終止,因為我用的系統(tǒng)不支持路由套接字(什么是路由套接字以后會慢慢講解)

cd ../libxti??       # only if your system supports XTI

make

我的系統(tǒng)也不支持XTI

最后

cd ../intro???     # build and test a basic client program

make

正常完成,也就是說unix卷1第一章簡介中的所有程序都編譯鏈接完成,可以正常運(yùn)行

下面我們來測試:

先啟動時間服務(wù)程序(一般linux可能自帶時間服務(wù)程序,但默認(rèn)可能是不開啟的,你也可以直接開啟自帶的時間服務(wù)程序)

sudo ./daytimetcpsrv &  記住權(quán)限問題,開啟服務(wù)程序,一般需要綁定和監(jiān)聽端口號,需要授予較高權(quán)限,所以sudo

再運(yùn)行客戶端時間獲取程序

./daytimetcpcli 127.0.0.1

截圖如下

成功!??!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容