--以前的旧作,贴出来留作纪念。现在ACE都已经出到5.5。
ACE+TAO的下载:http://deuce.doc.wustl.edu/Download.html.
版本是Latest Release. The latest release is ACE 5.4, TAO 1.4, and CIAO 0.4 (ACE+TAO+CIAO x.4), 我用的是整个package; ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz。
OS: Solaris 10 1/06 for X86. 下载地址:http://www.sun.com/software/solaris/get.jsp
Compiler: Sun Studio 10. 下载地址:https://jsecom8a.sun.com/ECom/EComActionServlet;jsessionid=0DE40189D1BBA6C46A0DF89DA2A5C082
Patch: http://developers.sun.com/prodtech/cc/downloads/patches/ss10_patches.html
Patch是一定要打的。因为ACE+TAO里面使用了很多高级template技术,如果不打patch的话,Sun Studio 10编译起来会有问题。
因为平台是X86的,所以要打的patch是:
C++ Compiler 117831 Sun Studio 10 C++ Compiler
x86 Compiler Backend 117846 Sun Studio 10 x86 compiler backend
C Compiler 117837 Sun Studio 10 C Compiler
dbx Debugger 118682 Sun Studio 10 debug info handling
因为我们的平台是Solaris 10, 如果你使用的Solaris 10 3/05, Solaris 10的patch也是需要的。如果你用的是上面提供的网址下载的Solaris 10 1/06, 就不需要了。
准备工作
第一步当然是gunzip, untar解包。解出来的文件名是ACE_wrapper,
然后创建环境变量
PATH=$PATH:/opt/SUNWspro/bin:/usr/sfw/bin
export PATH
ACE_ROOT=/export/home/user/ace.5.4.cc.32
export ACE_ROOT
TAO_ROOT=$ACE_ROOT/TAO
export TAO_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib
export LD_LIBRARY_PATH
接着制作config.h和platform_macros.GNU
创建$ACE_ROOT(default main folder name is ACE_wrapper)/ace/config.h
内容如下:
#ifndef ACE_CONFIG_H
#include "ace/config-sunos5.9.h"
#define ERRMAX 256 /* Needed for following define */
#define ACE_LACKS_SYS_NERR
#endif /* ACE_CONFIG_H */
创建$ACE_ROOT/include/makeinclude/platform_macros.GNU
内容如下
include $(ACE_ROOT)/include/makeinclude/platform_sunos5_sunc++.GNU
以上大家其实仔细看ACE+TAO Guide,上面也有介绍。不过下面的内容都是偶自己订制。
修改$(ACE_ROOT)/include/makeinclude/platform_sunos5_sunc++.GNU
在181行后,强制将templates定义成automatic
templates = automatic
--
182 templates = automatic
183 # Turn on the proper flags for explicit template instantiation.
184 #
185 ifeq ($(templates),explicit)
186 ifeq ($(TEMPLATES_FLAG),) # Turn on flags if none is speficied.
187 TEMPLATES_FLAG=-instances=explicit
188 endif
189 CPPFLAGS += -DACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION
190 endif
--
让Sun Studio 自己去自动识别处理template的定义。这步非常关键。
接着修改$(ACE_ROOT)/ace/OS_NS_sys_utsname.inl
将::uname的调用变成::nuname
这是因为include sys/utsname的时候,会找不到uname,不过不要紧,我们可以用nuname代替。
最后就是修改$(ACE_ROOT)/TAO/orbsvcs/orbsvcs/Makefile.RTKokyuEvent
将--lACE变为-lACE
虽然是个明显的bug,但是想想作为一个几十万行的开源软件,能做到这样也实数不易。
接着我们就compile,
gmake; cd TAO; gmake
整个编译过程大概花30分钟。当然编译时间的长短要看你的机器powerful的程度了。
gmake结束后,测试一下编译出来的TAO能不能用。翻出$(ACE_ROOT)/TAO/tests/Param_Test, 执行以下run_test.pl,看一下结果。tests目录下还有许多其他的测试用例,大家可以执行测试一下。
当然这个默认编译出来的版本照例是32-bit。64-bit我也试过,不行,发现里面有不少将pointer强制转换成int,看来这个版本还不支持64bit computing。
题外话:
ACE+TAO大家有可能没听说过,著名的开源Corba,里面采用了很多高级的Pattern技术,而且对操作系统平台的也很广,从Unix, Linux, Windows 一直到嵌入式系统。因此备受开发人员推崇,而且被许多跨国公司使用。大家可以通过这个网址http://www.cs.wustl.edu/~schmidt/TAO-users.html
看有谁在使用,里面有不少很著名的公司:Cisco, Nortel, Motorola, Alcatel。
最近有个项目需要将ACE+TAO移植到Solaris 10,因为最新的stable版本是5.4,这 个版本是2004年release,所以在Solaris 10编译,花了不少力气。Solaris 10是 2005年头release出来的。
自己也在google上苦苦搜索过,发现这方面的资料比较少,所以记录下来供大家分享。
ACE+TAO的下载:http://deuce.doc.wustl.edu/Download.html.
版本是Latest Release. The latest release is ACE 5.4, TAO 1.4, and CIAO 0.4 (ACE+TAO+CIAO x.4), 我用的是整个package; ACE-5.4+TAO-1.4+CIAO-0.4.tar.gz。
OS: Solaris 10 1/06 for X86. 下载地址:http://www.sun.com/software/solaris/get.jsp
Compiler: Sun Studio 10. 下载地址:https://jsecom8a.sun.com/ECom/EComActionServlet;jsessionid=0DE40189D1BBA6C46A0DF89DA2A5C082
Patch: http://developers.sun.com/prodtech/cc/downloads/patches/ss10_patches.html
Patch是一定要打的。因为ACE+TAO里面使用了很多高级template技术,如果不打patch的话,Sun Studio 10编译起来会有问题。
因为平台是X86的,所以要打的patch是:
C++ Compiler 117831 Sun Studio 10 C++ Compiler
x86 Compiler Backend 117846 Sun Studio 10 x86 compiler backend
C Compiler 117837 Sun Studio 10 C Compiler
dbx Debugger 118682 Sun Studio 10 debug info handling
因为我们的平台是Solaris 10, 如果你使用的Solaris 10 3/05, Solaris 10的patch也是需要的。如果你用的是上面提供的网址下载的Solaris 10 1/06, 就不需要了。
准备工作
第一步当然是gunzip, untar解包。解出来的文件名是ACE_wrapper,
然后创建环境变量
PATH=$PATH:/opt/SUNWspro/bin:/usr/sfw/bin
export PATH
ACE_ROOT=/export/home/user/ace.5.4.cc.32
export ACE_ROOT
TAO_ROOT=$ACE_ROOT/TAO
export TAO_ROOT
LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib
export LD_LIBRARY_PATH
接着制作config.h和platform_macros.GNU
创建$ACE_ROOT(default main folder name is ACE_wrapper)/ace/config.h
内容如下:
#ifndef ACE_CONFIG_H
#include "ace/config-sunos5.9.h"
#define ERRMAX 256 /* Needed for following define */
#define ACE_LACKS_SYS_NERR
#endif /* ACE_CONFIG_H */
创建$ACE_ROOT/include/makeinclude/platform_macros.GNU
内容如下
include $(ACE_ROOT)/include/makeinclude/platform_sunos5_sunc++.GNU
以上大家其实仔细看ACE+TAO Guide,上面也有介绍。不过下面的内容都是偶自己订制。
修改$(ACE_ROOT)/include/makeinclude/platform_sunos5_sunc++.GNU
在181行后,强制将templates定义成automatic
templates = automatic
--
182 templates = automatic
183 # Turn on the proper flags for explicit template instantiation.
184 #
185 ifeq ($(templates),explicit)
186 ifeq ($(TEMPLATES_FLAG),) # Turn on flags if none is speficied.
187 TEMPLATES_FLAG=-instances=explicit
188 endif
189 CPPFLAGS += -DACE_HAS_EXPLICIT_TEMPLATE_INSTANTIATION
190 endif
--
让Sun Studio 自己去自动识别处理template的定义。这步非常关键。
接着修改$(ACE_ROOT)/ace/OS_NS_sys_utsname.inl
将::uname的调用变成::nuname
这是因为include sys/utsname的时候,会找不到uname,不过不要紧,我们可以用nuname代替。
最后就是修改$(ACE_ROOT)/TAO/orbsvcs/orbsvcs/Makefile.RTKokyuEvent
将--lACE变为-lACE
虽然是个明显的bug,但是想想作为一个几十万行的开源软件,能做到这样也实数不易。
接着我们就compile,
gmake; cd TAO; gmake
整个编译过程大概花30分钟。当然编译时间的长短要看你的机器powerful的程度了。
gmake结束后,测试一下编译出来的TAO能不能用。翻出$(ACE_ROOT)/TAO/tests/Param_Test, 执行以下run_test.pl,看一下结果。tests目录下还有许多其他的测试用例,大家可以执行测试一下。
当然这个默认编译出来的版本照例是32-bit。64-bit我也试过,不行,发现里面有不少将pointer强制转换成int,看来这个版本还不支持64bit computing。
题外话:
ACE+TAO大家有可能没听说过,著名的开源Corba,里面采用了很多高级的Pattern技术,而且对操作系统平台的也很广,从Unix, Linux, Windows 一直到嵌入式系统。因此备受开发人员推崇,而且被许多跨国公司使用。大家可以通过这个网址http://www.cs.wustl.edu/~schmidt/TAO-users.html
看有谁在使用,里面有不少很著名的公司:Cisco, Nortel, Motorola, Alcatel。
![#](http://blog.gceclub.sun.com.cn/imgs/permalink3.gif)