UBuntu8.04的ACE5.6编译和环境配置

news/2024/7/5 3:16:20
 

ACE历时20年,耗费数千万美金,在中间件领域享有盛誉。更可贵的是,ACE彻底的开源,且没有任何限制条件,完全是共产主义的精神,让人钦佩。

ACEWrapper Facade模式解决了夸平台的c++编程问题。虽然我们现在有标准C++,但是目前的C++标准库对于多线程、网络通信、并发处理、进程管理以及小内存分配、共享内存、内存映射文件等诸多实际运用中的问题没有支持。相信随着时间的推移,C++标准库会越来越多的关心我们程序员实际编程中的问题,但是现在,我需要ACE.

ACE的文档在http://www.dre.vanderbilt.edu/Doxygen/Stable/ace/index.html

,你可以从www.riverace.com下载最新的ACE安装包。

UBuntu8.04下安装ACE开发环境

首先要确保UBuntu已经安装了g++和openssl。
apt-get install g++来安装g++
通过新立得软件查找libssl来安装。我安装的是libssl0.9.8,libssl0.9.8-dbg,libssl-dev。
然后将ACE压缩包解压,并放到自己的目录(我的目录为/home/freebird/software)下,仔细阅读install.html中关于 unix的部分,按照上面的做,我没有使用传统方式。如果执行configure命令或者make命令时报错,通常是缺少相应的库。安装指定的库以后,一定要重新执行../configure命令。
目录/home/freebird/software/ACE_wrappers/build/ace/.libs下的libACE-5.6.so文件就是我们的动态库文件。

注意,执行make install的时候,要用sudo命令

如果不使用最新版本,也可以用下面的命令在Ubuntu中直接安装,或者用新立德搜索libace。

sudo apt-get install libace-dev libace-doc libace5.4.7c2a libssl-dev

使用ACE编写第一个程序

代码编写需要了解ACE的一些基本知识,所有的ace头文件都在ace目录下,我的机器上ace目录安装在/software/ACE_wrappers




为了确保动态连接库运行时加载正确,需要如下设置:

UBuntu8.04的配置方法--在动态库的配置文件子目录(/etc/ld.so.conf.d)里增加一个文件ace.conf

内容为:/home/freebird/software/ACE_wrappers/build/ace/.libs 这是动态链接库的目录路径,

然后执行ldconfig命令修改全局缓冲文件


如果别的linux系统没有/etc/ld.so.conf.d目录,就需要直接将/software/ACE_wrappers/ace加到/etc/ld.so.conf文件中,然后执行ldconfig命令


下面编写测试代码,如果编译通过,那么环境配置正确:



#include "ace/Log_Msg.h"

#include "ace/OS_main.h"

#include "ace/INET_Addr.h"

#include "ace/SOCK_Connector.h"

#include "ace/SOCK_Stream.h"


int ACE_TMAIN(int argc, ACE_TCHAR* argv[])

{

ACE_DEBUG((LM_DEBUG,ACE_TEXT("freebird./n")));

ACE_SOCK_Connector connector;

ACE_SOCK_Stream peer;

ACE_INET_Addr peer_addr;

if(peer_addr.set(80,"192.168.22.26")==-1)

return 1;

else if(connector.connect(peer,peer_addr)==-1)

return 1;

}



编译的命令并不复杂,主要是编译参数要注意:

g++ -I$ACE_ROOT -L$ACE_ROOT/ace test.cc -lACE

-l后面指定头文件目录/home/freebird/software/ACE_wrappers

-L后面指定ACE库文件路径/software/ACE_wrappers/ace

-l后面指定库文件名称ACE


编写一个makefile也很简单,内容如下:


#define some variables
Shell=/bin/sh
CPlus=g++
CPlusInclude=-I$(ACE_ROOT)
CPlusExtraInclude=-L$ACE_ROOT/ace
Libs=-lACE
CPlusFlags=-Wall -c -g


test.out:
    $(CPlus) -o test.out $(CPlusInclude) $(CPlusExtraInclude)  test.cc $(Libs)

#make clean will execute this
clean:
    rm -f *.o *.out

#make will ignore the file which has one of the below names
.PHONY:

clean test.out


注意:

1)编译命令一定要用tab符号开头

2).PHONY规定的clean 和 test.out,确保不会因为存在这个文件,命令不能执行


转载于:https://www.cnblogs.com/believeit/archive/2008/08/22/2183604.html


http://www.niftyadmin.cn/n/4820573.html

相关文章

AndFix热补丁修复

AndFix热补丁修复 AndFix,全称是Android hot-fix。是阿里开源的一个热补丁框架,允许APP在不重新发布版本的情况下修复线上的bug。支持Android 2.3 到 6.0,并且支持arm 与 X86系统架构的设备。完美支持Dalvik与ART的Runtime,补丁文…

在应用中嵌入Python - lf8289的专栏 - CSDNBlog

在应用中嵌入Python - lf8289的专栏 - CSDNBlog " 在应用中嵌入Python收藏 新一篇: 软件在线升级设计方案及演变过程分析 | 旧一篇: 在windows下面关闭subprocess打开的子进程 在应用中嵌入Python 翻译: gashero前面的章节讨论如何扩展Python,如何生成适合…

Gradle认识

Gradle认识 Android Studio 的核心是Google新推出的Gradle编译系统。gradle用于替代Eclipse所使用的ant作为android的编译工具,相对于ant编译工具,gradle吸纳了ant的脚本特性、Maven丰富的依赖管理策略和强大的插件式环境。所以它比ant上手要难。 grad…

VS2010配置QT

用了这么久的Qt,IDE一直都是 VS 与 Creator 并用(实际开发以VS为主),至于哪个更好这里不发表看法,各有所长,而且也因人而异,萝卜青菜,各有所爱。 Qt5发布很久之后,才把版…

ACE内存映射技术

内存映射文件 多个操作系统平台都提供了内存映射文件,这是一个简单的将数据结构保存到文件中的机制。同时由于32位操作系统的进程虚拟内存最大只能4GB,用内存映射文件的方式就可以突破这个限制,可以用来打开超过4GB的大文件。 而且&#xff0…

征服Python—语言基础与典型应用

书名&#xff1a; 征服Python—语言基础与典型应用 出版社&#xff1a;人民邮电出版社作者&#xff1a;孙广磊出版日期&#xff1a;2007年9月版次&#xff1a;第1版ISBN&#xff1a;978-7-115-216657-9/TP定价&#xff1a;59.00元 想读&#xff1a; <script src"htt…

SecureCRT 与Linux基本命令介绍

SecureCRT SecureCRT是常用得瑟终端仿真程序&#xff0c;就是windows下登陆Linux或Unix服务器主机的软件 SecureCRT的安装教程大家可以百度&#xff0c;就不详细描述了&#xff0c;可以参考http://jingyan.baidu.com/article/49ad8bce69ad285834d8fa9a.html Linux基础命令的…

VC调用.dll文件

调用的原理&#xff1a; 调用DLL&#xff0c;首先需要将DLL文件映像到用户进程的地址空间中&#xff0c;然后才能进行函数调用&#xff0c;这个函数和进程内部一般函数的调用方法相同。Windows提供了两种将DLL映像到进程地址空间的方法&#xff1a;隐式调用&#xff08;通过lib…