(一)源码包获取
这个和windows篇的相同,不再赘述!
(二)编译步骤
1、 用tar zxvf命令解压至一目录,如:/usr/local/ACE_wrappers
2、 在源码解压目录下创建一个编译目录如objdir,即/usr/local/ACE_wrappers/objdir
3、 cd objdir,执行../configure && make && make install;
注:如果RP足够好,编译能很顺利完成,但我在编译时出一许多问题,在网上找了一圈资料,发现和我类似的哥们很多:(,现小结如下:
1)遇到couldn't find openssl/bio.h错误
解决办法:
先检查机器上是否安装openssl,建议最好,安装一个最新版本的,到http://www.openssl.org/source/上下一个下载,我安装的是1.0.0.0的,安装好以后,bio.h 文件在 /usr/local/ssl/include/openssl/bio.h 目录中,简单的办法是:
用 root 用户进行下面的操作.
cd /usr/include
ln -s /usr/local/ssl/include/openssl openssl
2)链接时碰到下面一大堆错误:
client-SSL-client.o: In function `ACE_SSL_SOCK_Stream::close()':
../../../../ace/SSL/SSL_SOCK_Stream.i:278: undefined reference to `SSL_shutdown'
../../../../ace/SSL/SSL_SOCK_Stream.i:280: undefined reference to `SSL_get_error'
../../../../ace/SSL/SSL_SOCK_Stream.i:289: undefined reference to `SSL_clear'
解决办法:
在当胶编译目录下,分别找到examples/IPC_SAP/SSL_SAP/Makefile和tests/SSL/Makefile两个文件,在里面找到"LIBS = -lrt -ldl" 这一项,将其修改为:
LIBS = -lrt -ldl /usr/lib/libssl.a /usr/lib/libcrypto.a
上面两个.a静态库的路径以你实际存放的路径为准
(三)hello, world
复用前面的例子,呵,先享受ACE带到跨平台的优势了:)
#include "ace/ACE.h"
#include "ace/OS_NS_stdio.h"
#include <iostream>
using namespace std;
int main (int argc, char *argv[])
{
char msg[100] = {0};
ACE_OS::sprintf(msg, "hello %s ", "world");
cout << msg << endl;
return 0;
}
执行g++ -g -o hello hello.cpp -lACE编译,然后运行./hello,熟悉的hello, world出现了
到这里ACE的编译环境搭建完毕了,从此,开始ACE的学习征途了!~~