ACE的安装

来源:互联网 发布:淘宝e店宝 编辑:程序博客网 时间:2024/05/15 04:31

ACE 的编译

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

1.1 Linux 下的编译

对于习惯了“三板斧”的 Linux 用户而言, 解压 ACE 后发现的第一个问题一定是:居然没有熟悉的 configure! 是的, ACE 没有使用 autoconf。

首先, 我们需要设置 $ACE_ROOT 环境变量, 把该环境变量指向你解压 ACE 后得到的最上层目录, 如果你把 ACE 解压到了其它目录, 请修改下面提到的路径。

$ export ACE_ROOT=/src/ACE_wrappers

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

#include "ace/config-linux.h"

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

include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU

然后回到 $ACE_ROOT 目录, 执行 make

编译过程执行到中途的时候会出错, 那是因为 ACE 库中的部分代码需要通过一个代码生成器来生成,而令人发指的一点是该代码生成器居然依赖 ACE 的库, 而此时 ACE 的库却还没有安装。没关系, 虽然整个 ACE 还没有编译完, 但它依赖的 libACE.so 却已经准备好了。切换到 root 下把 libACE.so.5.4.8 (如果你安装的 ACE 源码库与我的版本不一致,这个数也可能是别的) 复制到 ldconfig 能找到的路径下, 如 /usr/lib/usr/local/lib 下, 执行 ldconfig 刷新系统库列表,然后删除 $ACE_ROOT/apps/gperf/tests/cpp.cpp, 最后重新运行 make, 经过漫长地等待后, ACE 就编译好了。

为了方便使用, 我们可以把 $ACE_ROOT/lib 下的内容复制到 /usr/lib/usr/local/lib 下, 可以使用滇狐编写的这段脚本复制共享库,命令行为:./install.sh /usr/local/lib

#!/bin/sh
# Please place this file at $(ACE_ROOT)

if (test $# -lt 1) then
echo 'Usage: install.sh <target directory>'
else
pushd $1
for file in $ACE_ROOT/lib/*
do
realname=`readlink $file`
ln -s `basename $realname` `basename $file`
cp --remove-destination $realname .
done
popd
fi

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 改名。

原创粉丝点击