ACE安装和配置

1 -- ACE的主页以及下载链接

下载ACE源码以及ACE的编程文档:http://www.cs.wustl.edu/~schmidt/ACE.html

2 -- 编译前准备

源代码包解压之后,会在该目录下生成一个名称为ACE_wrappers的子目录,该目录是发行包的顶级目录,称为$ACE_ROOT,其中包括ACE的源代码、工具和例子。ACE源代码和头文件位于$ACE_ROOT/ace目录中。
定义:$ACE_ROOT=/usr/local/ACE/ACE_wrappers

步骤1:设置ACE_ROOT的环境变量
linux-m70n:vi /etc/profile
在文件末尾添加如下内容:
export ACE_ROOT=/usr/local/ACE/ACE_wrappers
export LD_LIBRARY_PATH=$ACE_ROOT:$LD_LIBRARY_PATH
保存退出:
linux-m70n:source /etc/profile

步骤2:在$ACE_ROOT/ace目录中创建config.h文件,添加如下内容后保存退出
#include “ace/config-linux.h”

步骤3:在$ACE_ROOT/include/makeinclude目录中创建platform_macros.GNU文件,添加如下内容后保存退出
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU

步骤4:在$ACE_ROOT目录下创建build子目录,以后经在该目录里编译ACE
linux-m70n:cd $ACE_ROOT
linux-m70n:mkdir build

3 -- 配置ACE的安装选项,生成Makefile文件

在build目录下执行configure命令,生成适合本系统的Makefile文件。配置时可以加入其他选项,具体选项使用configure –help查看,详细说明请参阅ACE_wrappers目录下的ACE-INSTALL.html文件。
linux-m70n:cd $ACE_ROOT/build
linux-m70n:../configure –prefix=/usr/local/ACE
如果环境都OK的话,会正确的生成Makefile文件,如果这里出错了请参看config.log寻找具体原因。

4 -- 编译ACE

linux-m70n:cd $ACE_ROOT/build
linux-m70n:make

5 -- 安装

将生成的头文件、库文件以及手册页安装到指定的目录中,执行命令:
linux-m70n:make install

6 -- 设置动态链接库,让程序正确加载ACE的动态链接库文件

linux-m70n:vi /etc/ld.so.conf
在ld.so.conf文件的中,加入一面一行
/usr/local/ACE/lib
然后,执行命令:
linux-m70n:ldconfig

7 -- 安装成功测试

步骤1 编写Makefile文件
将如下内容保存为makefile,然后将该文件存放于目录/usr/local/ACE/ACE_wrappers/examples/C++NPv1内。

INC_ACE =-I/usr/local/ACE/include
LIB_ACE =-L/usr/local/ACE/lib -lACE
all:Iterative_Logging_Server Logging_Client
Iterative_Logging_Server:Iterative_Logging_Server.cpp Logging_Handler.o  Logging_Server.o
g++ -Wall -o Iterative_Logging_Server Iterative_Logging_Server.cpp Logging_Server.o Logging_Handler.o -I./ $(INC_ACE) $(LIB_ACE)
Logging_Server.o:Logging_Server.cpp
g++ -Wall -c Logging_Server.cpp -I./ $(INC_ACE) $(LIB_ACE)
Logging_Client:Logging_Client.cpp Logging_Handler.o
g++ -Wall -o Logging_Client Logging_Client.cpp Logging_Handler.o -I./ $(INC_ACE) $(LIB_ACE)
Logging_Handler.o:Logging_Handler.cpp
g++ -Wall -c Logging_Handler.cpp -I./ $(INC_ACE) $(LIB_ACE) 

步骤2 编译程序
执行命令如下:
linux-m70n:make –f makefile
步骤3 运行
编译通过之后,在该目录会生成两个可执行文件Iterative_Logging_Server(服务端)和Logging_Client(客户端)。执行如下测试:
在一个终端上执行命令:
linux-m70n:./Iterative_Logging_Server 12220
在另外一个终端上执行命令:
linux-m70n:./Logging_Client
然后在该终端上随意输入内容,并回车。
在该目录下会生成一个名称为:logging_server.log的文件,该文件中包含了在客户终端上输入的内容。

8 -- 文后附录

在安装ACE过程中遇到的一个问题:

configure:50033: error: cannot compute sizeof (wchar_t), 77 See `config.log' for more details.

按照配置错误去查看config.log寻找原因,搜索wchar_t发现有如下信息:

configure:49639: checking for wchar_t
configure:49693: result: yes
configure:49696: checking size of wchar_t
configure:50015: gcc -o conftest -g -O2 -pthread -pipe   conftest.cc  >&5
/tmp/cc9zSuj4.o(.eh_frame+0x11): undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
configure:50018: $? = 1
configure: program exited with status 1
configure: failed program was:

根据输出日志来看,在检测sizeof(wchar_t)的时候出错了,具体原因就是”undefined reference to `__gxx_personality_v0`”。而出现这个错误的一般原因是:”__gxx_personality_v0″错误信息表示试图用gcc编译c++的代码。但”configure: failed program was:”后输出的检测代码并不是C++,而是纯C代码。但configure把这段段代码保存为了conftest.cc,也就是说必须要用g++去编译,在这里不知道为什么选择了gcc去编译,这就是出现问题的根本所在。
使用echo $CC;echo $CXX,发现在环境变量中将CC和CXX定义为了gcc,于是准备把它修正过来:
vi /etc/profile
将CC和CXX前加上#,或者直接删除掉
source /etc/profile

修改完毕后,重新配置,即可!

posted @ 2009-11-05 15:49  酱油和醋  阅读(3640)  评论(0编辑  收藏  举报