概述:
前段时间,因为工作原因使用了ACE,使用前早就听说了ACE的大名,是一个跨平台,适用于网络开发,开源,免费的第三方组件库,使用的公司很挻多的。可见这是一个很成熟的东西。使用过程中也走了一些弯路,学习,编译和安装等,但学习和使用过程,确实感觉这是一个不错的库,帮我们做了很多事情。这里把ACE的编译和安装写出来,希望后来人使用这个库的时候,能够多一份参考,少走些弯路。下面我们一步一步来编译,安装,搭建我们的ACE开发环境。
准备:
编译安装前,我们需下列环境和软件
windows 我使用的是vs2008
Suse Linux EnterPrise Desktop 10 g++ 4.1.0或更高版本。
ACE5.8 目前最高版本是6.0,可以到http://www.riverace.com官网上下载
一、Win32篇:
1) 把ACE58SRC.tar.gz拷贝到指定目录下(本文档以E:\ACE58目录为例)并解压,生成ACE_wrappers文件夹
2) 创建环境变量ACE_ROOT=E:\ACE58\ACE_wrappers。 在PATH中加入%ACE_ROOT%/lib。环境变量创建和设置方法:(win7)“我的电脑”单击右键--〉“高级系统设置”--〉环境变量。
3)在E:\ACE58\ACE_wrappers\ace文件夹下创建config.h文件,编辑文件加入#include "ace/config-win32.h"
4)编译过程
动态链接库版本:通过vs2008打开E:\ACE58\ACE_wrappers\ACE_vc9.sln分别编译Debug和Release版本,编译结束后,输出窗口显示信息 “========== 生成: 成功0 个,失败0 个,最新680 个,跳过0 个==========”表示编译成功。到E:\ACE58\ACE_wrappers\lib目录下,可以看到Release 版本的 ACE.dll ACE.lib和Debug版本的ACEd.dll ACEd.lib
静态链接库版本:通过vs2008 打开E:\ACE58\ACE_wrappers\ ACE_vc9_Static.sln 分别编译Debug和Release版本,编译结束后,输出窗口显示信息“========== 生成: 成功0 个,失败0 个,最新680 个,跳过0 个==========”表示编译成功。到E:\ACE58\ACE_wrappers\lib目录下,可以看到Release 版本的ACEs.lib和Debug版本的ACEsd.lib
5)搭建ACE开发环境
启动vs2008 通过菜单“工具”==〉“选项”==>“项目和解决方案”==>“VC++目录” 打开选项页界面。如图1-1所示
图1-1
分别修改
“包含文件”加入$(ACE_ROOT)
“库文件”加入$(ACE_ROOT)/lib
6)使用ACE动态库
新建工程,需要在“项目”==〉“ 属性”==〉“链接器”==〉“输入”==〉“附加依赖关系” 项加入ACE.lib或ACEd.lib,如图1-2所示。
图1-2
7)使用ACE静态库
1、 在动态库已经配置的基础上,再需要“项目”==〉“属性”==〉“C/C++”==〉“预处理器”==〉“预处理定义”加入ACE_AS_STATIC_LIBS宏,加入这个宏后,如图1-3所示,项目编译就使用静态库,否则使用动态库。
2、 注意:加入这个宏后,要把“项目”==>“ 属性”==〉“链接器”==〉“输入”==〉“附加依赖关系” 的ACE.lib 改成静态库的 ACEs.lib 或 ACEsd.lib,修改请参考图1-2
图1-3
二、Linux篇
使用具有root权限的用户登陆,也可用其它用户登陆后,su root命令切换到root名户。本文以root登陆,本文以ACE58SRC.tar.gz放到/root目录为例。
1) 把ACE58SRC.tar.gz上传到/root目录,通过tar xvzf ACE58SRC.tar.gz 解压,生成ACE_wrappers。
2)设置环境变量:按下列步骤设置环境变量
cd ~
vi .profile
编辑 .profile文件加入
ACE_ROOT=/root/ACE_wrappers
export ACE_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/lib:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
退出,重新登陆。
3) 进入/root/ACE_wrappers/ace目录,新建一个config.h文件,编辑文件里加入
#include "ace/config-linux.h"
4)进入/root/ACE_wrappers/include/makeinclude目录,新建一个platform_macros.GNU文件,编辑文件加入
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
INSTALL_PREFIX = /usr/local
5)编译和安装
make
make install
编译结束后,头文件放在/root/ACE_wrappers/ace,共享文件放在/root/ACE_wrappers/lib
三、验证环境
1)Win32篇
新建一个控制台工程,输入如下代码:
#include "stdafx.h"
#include "ace/OS.h"
#include "ace/Log_Msg.h"
int main(int argc, char *argv[])
{
char *pszBuf = "Hello ACE";
ACE_OS::printf("%s\n", pszBuf);
return 0;
}
参考Win32篇搭建环境,编译如果通过,执行会输出"Hello ACE"
2)Linux篇
新建一个c++文件test_ace.cpp,编辑文件加入如下代码
#include "ace/OS.h"
#include "ace/Log_Msg.h"
int main(int argc, char *argv[])
{
char *pszBuf = "Hello ACE";
ACE_OS::printf("%s\n", pszBuf);
return 0;
}
编译 g++ -c test_ace.cpp
链接g++ test_ace.o –o test_ace.exe –lACE
执行 ./test_ace.exe
输出"Hello ACE"
四、参考资料
http://www.dre.vanderbilt.edu/~schmidt/DOC_ROOT/ACE/ACE-INSTALL.html#unix_traditional