ACE 全称是 ADAPTIVE Communication Environment,其中 ADAPTIVE 的全称是A Dynamically Assembled Protocol Transformation, Intergration, and eValuation Environment,它是一个非常优秀的工具包,可以用于构建高性能、跨平台的网络应用,本页介绍了在 Windows 和 Linux 下安装 ACE 的方法。另外,这里记录了一些滇狐学习、应用 ACE 的笔记。

1 ACE 的编译

在正式开始使用 ACE 之前,我们必须先编译 ACE。首先到ACE 的官方站点 下载 ACE 的源码包,然后解压到一个你喜欢的目录,为编译做好准备。

1.1 Linux 下的编译

Linux 下编译 ACE 很简单,就是一部标准的三部曲,唯一不同的是,ACE 不允许在代码解压的根目录下执行 ./configure,你必须创建一级子目录,然后在子目录中 ../configure

mkdir objdir
cd objdir
../configure
make
sudo make install

当滇狐最开始接触 ACE 的时候,ACE 还没有使用 autoconf,由于编译脚本的一些 bugs,当时编译 ACE 有一系列古怪的步骤。滇狐把当时做的笔记放在这里,感兴趣的考古爱好者可以看看。

1.2 使用 MinGW + MSys 在 Windows 下的编译

为了在 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 解压到了其它目录,请修改下面提到的路径。

export ACE_ROOT=/e/ACE_wrapper

接下来,我们进入 $ACE_ROOT/ace 目录,创建一个文本 config.h,内容如下:

#include "ace/config-win32.h"

切记!虽然该目录下有一个 config-win32-mingw.h,但这里不要使用它,否则编译时会出错!

然后,我们进入 $ACE_ROOT/include/makeinclude 目录,创建一个文本文件 platform_macros.GNU,内容如下:

include $(ACE_ROOT)/include/makeinclude/platform_mingw32.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 改名。

2 推荐书目

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 购买。

ace_cover
标签:ACE 笔记 目录