在Linux操作系统下安装ACE的方法

什么是ACE?ACE(Aliyun Cloud Engine)是一个基于云计算基础架构的网络应用程序托管环境,帮助应用开发者简化网络应用程序的构建和维护,并可根据应用访问量和数据存储的增长进行扩展。ACE支持PHP,NODE.JS语言编写的应用程序;支持在线创建MYSQL远程数据库应用。

最近打算开始学习Linux下的C++程序开发,经过几天的搜索,发现ACE这套框架不错,最主要的是能够跨平台。不过在安装的过程中还是走了不少的弯路,在此记录下来。安装ACE,网络上有很多资料,百度google 一大把,我就找个比较有代表性的贴在下边吧。主要是想说一下遇到的问题。

下载安装包:http://download.dre.vanderbilt.edu/

首先把文件解压,我解压在了/Software文件夹下,解压后会出现一个名字为ACE_wrappers的文件夹。这样所有ACE的源文件都在/Software/ACE_wrappers里面

配置环境变量:

# vi /etc/profile

增加如下的内容:

ACE_ROOT=/Software/ACE_wrappers #就是上面存放ACE源文件的目录
export ACE_ROOT
LD_LIBARY_PATH=$ACE_ROOT/ace:$LD_LIBARY_PATH
export LD_LIBARY_PATH

# source /etc/profile

开始安装ACE

# cd /Software/ACE_wrappers
# vi ace/config.h

增加如下信息:

#include “ace/config-linux.h”

如果想用MSVC标准C++头,则需要在ace/config.h中增加定义:

#define ACE_HAS_STANDARD_CPP_LIBARY 1

我的config.h文件内容如下:

#define ACE_HAS_STANDARD_CPP_LIBARY 1 #使用标准C++头
#define ACE_NO_INLINE #不使用内连函数,能减小LIB和EXE的大小
#include “ace/config-linux.h”

保存后退出

# mkdir build   #新建一个build文件夹
# cd build
# ../configure --prefix=/usr/local/ACE   #在这里我指定了ACE的安装路径
# make & install

第一个问题,在make的时候找不到了ssl这个东西。这个ssl具体来说是网络上一个安全协议。系统默认是安装的,但是我在编译时候一直出现这个问题,原来是打开了。我的版本号是6.0的。所以,经过查找帮助文档,configure这个配置的时候:

--enable-ssl (yes): Include the ACE_SSL library when building ACE. Requires the SSL components to be available using the compiler's and linker's default search directories.
--with-openssl: Specifies the root directory of the OpenSSL installation; expects the specified directory to have include and lib subdirectories. To specify other locations for the header and libraries, use one or both of the following.
--with-openssl-include: Specify the directory containing the OpenSSL header files.
--with-openssl-libdir: Specify the directory containing the OpenSSL libraries.

解决办法:应该关闭它:../configure --disable-ssl

配置ACE环境

# vi /etc/ld.so.conf.d/ace.conf

在文件中增加如下信息:

/usr/local/ACE/lib

# ldconfig

测试ACE环境是否安装配置成功

编写一个简单的ACE程序,在这里我就用最简单的Hello World了,代码如下:

#include <ace/Log_Msg.h>
#include <ace/OS_main.h>

using namespace std;

int ACE_TMAIN(int argc, ACE_TCHAR *argv[])
{
ACE_DEBUG((LM_DEBUG, ACE_TEXT(“Hello World!”)));
return 0;
}

编译:# g++ -I/usr/local/ACE/include -O0 -g3 -Wall -c -fmessage-length=0 -MMD -MP -MF"HelloWorld.d" -MT"HelloWorld.d" -o"HelloWorld.o" "HelloWorld.cpp"

链接:# g++ -I$ACE_ROOT -L/usr/local/ACE/lib -o"ACETest" ./HelloWorld.o -lACE -lrt –lpthread

注意:在链接的时候,必须要加-lACE –lrt -lpthread三个参数,否则会报错。

执行:# ./ACETest

成功执行的话,会打印出Hello World

, 相关的文章: