本文同步自游戲人生
-----------------------讀書-----------------------
想讀《UNIX Network Programming》很久了,只是這種愿望一直沒有特別強(qiáng)烈。用的筆記本換了之后強(qiáng)迫自己只是裝了cygwin,沒有安裝VS,平時寫些代碼就只能在cygwin下用gcc了。最近對UNIX環(huán)境編程和網(wǎng)絡(luò)基礎(chǔ)比較感興趣,于是讀這本書終于提上了議事日程,可是大多數(shù)書店都沒有這本書了。
工作之后,對于自己喜歡的書,就很少會去看電子版,覺得還是捧卷在手的感覺舒服一些,想怎么看怎么看,享受拿筆在上面寫寫畫畫的感覺。因此對于想讀但買不到的書,第一反應(yīng)是等待。在翻電腦上面一些資料的時候才反應(yīng)過來我已經(jīng)很久沒有down過電子書了,結(jié)果就從網(wǎng)上down了很多想讀(豆瓣)的書,forgive me, Richard Stevens and anybody.
-----------------------動手-----------------------
之前只是在Windows下用過ACE,因?yàn)锳CE提供了VS各種版本的解決方案,編譯過程比較簡單。這次放在cygwin下編譯的時候,因?yàn)榄h(huán)境變量設(shè)置問題,并不是非常順利,參照了源碼目錄下的ACE-INSTALL.html的描述才將問題解決。現(xiàn)在將過程給出來,僅供google到這里的同學(xué)參考:
友情提示:我目前對于cygwin和UNIX類系統(tǒng)的了解停留在知其然(還是在google之后)的水平。
1. 增加環(huán)境變量
o 修改/etc/profile文件讀寫屬性:
$ chmod 777 /etc/profile
cygwin下的環(huán)境變量可以在該文件中配置,由于該文件默認(rèn)具有寫保護(hù)屬性,因此需要修改使之可寫,修改完成之后應(yīng)該記得對其進(jìn)行寫保護(hù):
$ chmod 555 /etc/profile
o 打開profile文件(本人使用emacs進(jìn)行編輯,讀者也可以使用vi、vim等,在此不再贅述):
$ emacs /etc/profile
o 往profile中修改和添加環(huán)境變量:
將以下五行添加到文件中,ACE_ROOT為ACE源碼目錄,本文用到的目錄是/usr/share/ace:
ACE_ROOT=/usr/share/ace
export ACE_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/ace:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
# export PATH=$ACE_ROOT/ace:$PATH
這個操作等同于在VS下修改庫文件目錄,我是直接修改了PATH變量的:
PATH=/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:$ACE_ROOT/ace:$PATH
o 執(zhí)行/etc/profile
$ /etc/profile
執(zhí)行修改后有可能需要重啟cygwin,可使用下面的命令查看ACE_ROOT設(shè)置是否正確:
$ echo $ACE_ROOT
2. 創(chuàng)建若干文件:
o 在$ACE_ROOT/ace 文件夾中創(chuàng)建名為 config.h 的文件,并加入以下內(nèi)容后保存關(guān)閉:
#include "ace/config-cygwin32.h"
o 在$ACE_ROOT/include/makeinclude 文件夾中創(chuàng)建名為 platform_macros.GNU 的文件,并加入以下內(nèi)容保存關(guān)閉:
include $(ACE_ROOT)/include/makeinclude/platform_cygwin32.GNU
3. 編譯ACE:
$ cd $ACE_ROOT/ace
$ make
大概會花掉十幾分鐘時間吧。
4. 測試ACE:
$ cd $ACE_ROOT/tests
$ make
大概又會花掉十幾分鐘時間吧。
接下來就可以使用perl腳本完成所有測試,我沒有使用過perl,臨時安裝了一下。
$ perl run_test.pl
這個腳本在我一位同事的機(jī)器上跑了很久(十幾分鐘 or 幾十分鐘?),不幸的是,Windows竟然拋出了一個內(nèi)存讀寫錯誤,更加不幸的是,我現(xiàn)在沒有能力去確定。
結(jié)果周末后面的時間又花在熟悉EMacs上了,還沒有看ACE的代碼,只有下周才能看了。
-----------------------結(jié)束-----------------------
這種小學(xué)生的東西拿出來講確實(shí)是很難為情的,然而,于我現(xiàn)在卻又算是極大的一個收獲。真等我熟悉了其中的很多內(nèi)容,又未必會再有耐心說了。所以還是記錄一下,既是鼓勵,也是督促。
晚上睡覺之前翻了一下《ACE程序員指南:網(wǎng)絡(luò)與系統(tǒng)編程的實(shí)用設(shè)計(jì)模式》,發(fā)現(xiàn)里面2.3節(jié)也講到了怎么安裝。