ACE 全称是 ADAPTIVE Communication Environment,其中 ADAPTIVE 的全称是A Dynamically Assembled Protocol Transformation, Intergration, and eValuation Environment,它是一个非常优秀的工具包,可以用于构建高性能、跨平台的网络应用,本页介绍了在 Windows 和 Linux 下安装 ACE 的方法。另外,这里记录了一些滇狐学习、应用 ACE 的笔记。
在正式开始使用 ACE 之前,我们必须先编译 ACE。首先到ACE 的官方站点 下载 ACE 的源码包,然后解压到一个你喜欢的目录,为编译做好准备。
Linux 下编译 ACE
很简单,就是一部标准的三部曲,唯一不同的是,ACE
不允许在代码解压的根目录下执行
./configure
,你必须创建一级子目录,然后在子目录中
../configure
:
当滇狐最开始接触 ACE 的时候,ACE 还没有使用 autoconf,由于编译脚本的一些 bugs,当时编译 ACE 有一系列古怪的步骤。滇狐把当时做的笔记放在这里,感兴趣的考古爱好者可以看看。
为了在 Windows 下编译 ACE,我们必须先安装一份 MinGW 和 MSys,这两个软件都可以到 MinGW 的官方站点 免费下载。使用昂贵的 Visual Studio 编译 ACE 的方法我们这里不再进行讨论。
首先安装 MinGW,然后再安装 MSys,安装完毕后,将 ACE
的源码包解压到某个目录,然后打开 MSys
控制台,切换到 ACE 所在的路径。注意,MSys
使用的路径表示方式与 Windows
不大一样,它使用正斜杠“/
”作为路径分隔符,并且把驱动器名看做根目录下的文件夹。例如,我把
ACE 解压到 E:\ACE_wrapper 下
,在 MSys
中的写法是:/e/ACE_wrapper
。设置
$ACE_ROOT
环境变量,把该环境变量指向你解压
ACE 后得到的最上层目录,如果你把 ACE
解压到了其它目录,请修改下面提到的路径。
接下来,我们进入 $ACE_ROOT/ace
目录,创建一个文本 config.h
,内容如下:
切记!虽然该目录下有一个
config-win32-mingw.h
,但这里不要使用它,否则编译时会出错!
然后,我们进入 $ACE_ROOT/include/makeinclude
目录,创建一个文本文件
platform_macros.GNU
,内容如下:
然后回到 $ACE_ROOT 目录,执行
make
,经过漫长地等待后,ACE
就编译好了。我不记得 Windows 下是否出现过 Linux
下类似的提前依赖 ACE 库的事件,而我现在手头上没有
Windows,如果你遇到类似的问题的话,参照 Linux
下编译的方法进行处理。
需要注意的一点是,安装 MSys 时,它会把你的 MinGW
中的 make.exe
改名为
mingw32-make.exe
,这样在编译的时候便会使用
MSys 中被包装过的 make.exe
,以便正常识别 Unix
风格的路径名。当编译完毕后,为了能够正常使用
MinGW,请把被修改的文件名改回来。当然,在再次使用
MSys 的时候,记得再将 make.exe
改名。
Stephen D. Huston、James CE Johnson 和 Umar Syyid 写的The ACE Programmer’s Guide, Practical Design Patterns for Network and System Programming 是一本非常不错的 ACE 参考书,中文译本《ACE 程序员指南,网络与系统编程的实用设计模式》,封面如下,可到 China-Pub 购买。