本文同步自游戏人生
-----------------------读书-----------------------
想读《UNIX Network Programming》很久了,只是这种愿望一直没有特别强烈。用的笔记本换了之后强迫自己只是装了cygwin,没有安装VS,平时写些代码就只能在cygwin下用gcc了。最近对UNIX环境编程和网络基础比较感兴趣,于是读这本书终于提上了议事日程,可是大多数书店都没有这本书了。
工作之后,对于自己喜欢的书,就很少会去看电子版,觉得还是捧卷在手的感觉舒服一些,想怎么看怎么看,享受拿笔在上面写写画画的感觉。因此对于想读但买不到的书,第一反应是等待。在翻电脑上面一些资料的时候才反应过来我已经很久没有down过电子书了,结果就从网上down了很多想读(豆瓣)的书,forgive me, Richard Stevens and anybody.
-----------------------动手-----------------------
之前只是在Windows下用过ACE,因为ACE提供了VS各种版本的解决方案,编译过程比较简单。这次放在cygwin下编译的时候,因为环境变量设置问题,并不是非常顺利,参照了源码目录下的ACE-INSTALL.html的描述才将问题解决。现在将过程给出来,仅供google到这里的同学参考:
友情提示:我目前对于cygwin和UNIX类系统的了解停留在知其然(还是在google之后)的水平。
1. 增加环境变量
o 修改/etc/profile文件读写属性:
$ chmod 777 /etc/profile
cygwin下的环境变量可以在该文件中配置,由于该文件默认具有写保护属性,因此需要修改使之可写,修改完成之后应该记得对其进行写保护:
$ chmod 555 /etc/profile
o 打开profile文件(本人使用emacs进行编辑,读者也可以使用vi、vim等,在此不再赘述):
$ emacs /etc/profile
o 往profile中修改和添加环境变量:
将以下五行添加到文件中,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 执行/etc/profile
$ /etc/profile
执行修改后有可能需要重启cygwin,可使用下面的命令查看ACE_ROOT设置是否正确:
$ echo $ACE_ROOT
2. 创建若干文件:
o 在$ACE_ROOT/ace 文件夹中创建名为 config.h 的文件,并加入以下内容后保存关闭:
#include "ace/config-cygwin32.h"
o 在$ACE_ROOT/include/makeinclude 文件夹中创建名为 platform_macros.GNU 的文件,并加入以下内容保存关闭:
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
这个脚本在我一位同事的机器上跑了很久(十几分钟 or 几十分钟?),不幸的是,Windows竟然抛出了一个内存读写错误,更加不幸的是,我现在没有能力去确定。
结果周末后面的时间又花在熟悉EMacs上了,还没有看ACE的代码,只有下周才能看了。
-----------------------结束-----------------------
这种小学生的东西拿出来讲确实是很难为情的,然而,于我现在却又算是极大的一个收获。真等我熟悉了其中的很多内容,又未必会再有耐心说了。所以还是记录一下,既是鼓励,也是督促。
晚上睡觉之前翻了一下《ACE程序员指南:网络与系统编程的实用设计模式》,发现里面2.3节也讲到了怎么安装。