TAO-1.5.1のSolaris10/SunStudio11でのビルドがエラーとなりました。
TAO/orbsvcs/FTRT_Event_Serviceのビルドで
ld: 重大なエラー: ライブラリ -lTAO_Strategies: 見つかりません。
たしかにこの時点でlibTAO_Strategies.soを検索しても見つからない。おかしい、TAOのコアライブラリの1つなので、orbsvcs下のビルド時にはすでにビルドされているはずです。
で、TAO/GNUmakefile(mwc.plで生成したもの)を見ると、TAO-1.5用のものから変わっています。
all: ACE ACEXML ACEXML_Parser ACEXML_XML_Svc_Conf_Parser Kokyu ACE_FlReactor ACE_QtReactor ACE_TkReactor ACE_XtReactor SSL gperf HTBP RMCast TMCast Send_Msg_Receiver Send_Msg_Sender RMCast_Receiver RMCast_Sender TAO_IDL_FE TAO_IDL_BE TAO_IDL_EXE TAO Codeset AnyTypeCode CodecFactory PI PortableServer Utils CosNaming_IDL CosNaming CosConcurrency_IDL CosConcurrency CosConcurrency_Skel CosConcurrency_Serv Concurrency_Service IORTable Svc_Utils IFR_Client Valuetype Messaging DynamicInterface CosEvent_IDL CosEvent CosEvent_Skel CosEvent_Serv CosEvent_Service RTSched Dump_Schedule BiDir_GIOP RTEvent RTEvent_Skel RTEvent_Serv RTSchedEvent Event_Service IORManipulation PortableGroup FTORB_Utils PI_Server FtRtEvent FTRT_EventChannel FTRT_Event_Service FT_ServerORB FT_ClientORB CosNotification_IDL CosNotification FaultTolerance FTRTEC_Factory_Service FTRT_ClientORB FTRTEC_Gateway_Service CosNotification_Skel FT_ReplicationManager_Lib FT_ReplicationManager Fault_Detector ETCL DynamicAny CosNotification_Serv Fault_Notifier ImR_Client TypeCodeFactory IFRService IFR_Service TAO_IFR_BE TAO_IFR_EXE ImR_Activator_IDL ImR_Locator_IDL ImR_Activator ImR_Activator_Service ImR_Locator ImR_Locator_Service tao_imr CosTrading_IDL CosTrading CosTrading_Skel CosTrading_Serv CosLifeCycle LifeCycle_Service ObjRefTemplate IORInterceptor CosLoadBalancing LoadManager LoadMonitor DsLogAdmin_IDL DsLogAdmin DsLogAdmin_Skel DsLogAdmin_Serv Basic_Logging_Service DsEventLogAdmin_IDL DsEventLogAdmin DsEventLogAdmin_Skel DsEventLogAdmin_Serv Event_Logging_Service DsNotifyLogAdmin_IDL DsNotifyLogAdmin DsNotifyLogAdmin_Skel DsNotifyLogAdmin_Serv Notify_Logging_Service RTEventLogAdmin_IDL RTEventLogAdmin RTEventLogAdmin_Skel RTEventLogAdmin_Serv RTEvent_Logging_Service CosNaming_Skel CosNaming_Serv NT_Naming_Service Naming_Service Notify_Service NT_Notify_Service Scheduling_Service TAO_Service CosTime Time_Service_Clerk Time_Service_Server Trading_Service CosProperty_IDL CosProperty CosProperty_Skel CosProperty_Serv AV CosNotification_Persist HTIOP RTCORBA RTPortableServer RTCORBAEvent RTKokyuEvent RT_Notification Security SSLIOP CSD_Framework CSD_ThreadPool Domain RTScheduler SmartProxies Strategies TAO_FlResource TAO_QtResource TAO_TkResource TAO_XtResource catior nsadd nsdel nslist : FTRT_Event_Service: ACE TAO_IDL_EXE TAO Codeset AnyTypeCode CodecFactory PI PortableServer Utils CosNaming Svc_Utils Valuetype Messaging RTSched RTEvent RTEvent_Skel RTEvent_Serv RTSchedEvent IORManipulation PortableGroup FTORB_Utils PI_Server FtRtEvent FTRT_EventChannel @cd orbsvcs/FTRT_Event_Service/Event_Service && $(MAKE) -f GNUmakefile.FTRT_Event_Service all
makeのALLターゲットが依存しているターゲットの中に、ビルドエラーが発生した"FTRT_Event_Service"とエラーの原因となるライブラリを生成する"Strategies"が含まれています。一方FTRT_Event_Serviceターゲットが依存しているターゲット中にはStrategiesが記述されていません。そのため、ALLターゲットの記述順番にビルドされるのでFTRT_Event_Serviceがビルドされる時点ではまだStrategiesがビルドされていないのでエラーになるものと考えられます。
ということで、安直な解決はエラーが出た時点でStrategiesを手動でビルドしてから再度全体のビルドをする方法です。
TAO/orbsvcs/FTRT_Event_Service/Factory_Service/FTRTEC_Factory_Service.mpcファイルを修正し、Strategiesに依存する記述を追加するのが本来の解決方法ではないかと思います。
Factory_Service$ diff -c FTRTEC_Factory_Service.mpc.orig FTRTEC_Factory_Service.mpc *** FTRTEC_Factory_Service.mpc.orig 2004年 9月 8日 (水) --- FTRTEC_Factory_Service.mpc 2006年 4月 29日 (土) *************** *** 1,7 **** // -*- MPC -*- // FTRTEC_Factory_Service.mpc,v 1.8 2004/09/07 23:40:59 jtc Exp ! project(FTRTEC_Factory_Service): orbsvcsexe, fault_tolerance, notification, event_skel { after += FaultTolerance exename = ftrtec_factory_service --- 1,7 ---- // -*- MPC -*- // FTRTEC_Factory_Service.mpc,v 1.8 2004/09/07 23:40:59 jtc Exp ! project(FTRTEC_Factory_Service): orbsvcsexe, fault_tolerance, notification, event_skel, strategies { after += FaultTolerance exename = ftrtec_factory_service Factory_Service$