ACE 5.4 + TAO 1.4 在Solaris 10 for X86 + Sun Studio 10 上 编译全攻略

本文详细介绍了如何将ACE+TAO移植到Solaris10的操作步骤,包括解决编译过程中遇到的问题及所需打的补丁等。
--以前的旧作,贴出来留作纪念。现在ACE都已经出到5.5。

最近有个项目需要将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。   #
于20244月-2025年9月期间,研究团队在贵州习水国家级自然保护区制定39条样线,涵盖灌木林、常绿阔叶林、针叶林、常绿落叶阔叶混交林、针阔混交林等不同植被类型,每条样线分春夏秋冬4个季节采集样品,用真菌采集软件记录经纬度、海拔、采集地点、时间、生境等信息,使用佳能相机(R6 mark Ⅱ)对大型真菌进行拍照,并采集标本,标本存放于贵州省生物研究所大型真菌标本馆(HGAMF)。 通过形态学初步鉴定,结合分子生物学最终鉴定,参考已]报道的中国毒蘑菇名录开展毒蘑菇的认定。 调查到保护区内有毒真菌7目25科64种,导致中毒的主要类型有急性肾衰竭型、神经精神型和胃肠炎型。最终形成贵州习水国家级自然保护区大型有毒真菌图片数据集,它由以下2个部分组成。 (1)附件1包含78张原始照片(.JPG),照片名字包括了大型有毒真菌的拉丁名和中文名,若无中文名的直接用拉丁名。 (2)附件2是一个压缩文件,包含了2张工作表,其中一张表是大型有毒真菌39条样线的信息,另一张表是大型有毒真菌的中毒类型。 照片采用佳能相机R6 mark Ⅱ拍摄,物种鉴定通过多种文献核实,并经两位以上专家鉴定确认。该数据集可为研究地及周边的普通人识别有毒大型真菌提供参考,通过及时的图片对比,能有效避免误采误食大型有毒真菌,同时为因误食大型真菌可能引发的身体损伤进行了总结,能为患者及时治疗提供参考。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值