debian9.6安裝TAO過程
TAO是ACE的ORB,所以需要先安裝ACE,詳細過程請參考debian9.6安裝ACE過程。
1,下載TAO
依舊是在官網上,http://download.dre.vanderbilt.edu/,這個是美國範德堡大學的一個網站。因為我下載的是ACE+TAO,所以連帶下載了TAO,解壓之後就在ACE_wrappers下有一個TAO的資料夾。
2,配置~/.bashrc
## vi ~/.bashrc
末尾新增
export TAO_ROOT=$ACE_ROOT/TAO
## source ~/.bashrc
使得配置生效
3,預編譯
按理說現在就可以make,不過我按照http://bbs.chinaunix.net/thread-1012206-1-1.html
## find . –name “*GNUmakefile*” | xargs rm
然後想自己生成新的makefile,結果我採用這條命令,即
通過mwc.pl命令及一個.mwc file的輸入檔案,就會產生預設的makefile檔案
## $ACE_ROOT/bin/mwc.pl TAO_ACE.mwc
問題1,提示我沒有配置CIAO_ROOT和DANCE_ROOT
問題2,以及沒有指定-type
問題1,我在http://download.dre.vanderbilt.edu/官網上下載了CIAO和DANCE的安裝包,解壓放到了$ACE_ROOT下,即和TAO同一根目錄,然後配置~/.bashrc
## vi ~/.bashrc
在末尾新增
export CIAO_ROOT=$ACE_ROOT/CIAO
export DANCE_ROOT=$ACE_ROOT/DANCE
## source ~/.bashrc
使得配置生效
問題2,根據提示there is no longer a default project type,網上沒有找到這個問題的解決方式,結果我發現了在TAO目錄下有個TAO-INSTALL.html,我試著去開啟,
## cd $ACE_ROOT/TAO
## firefox TAO_INSTALL.html
發現裡面有一個
## $ACE_ROOT/bin/mwc.p TAO.mwc -type gnuace
試了一下,可以了。
4,正式編譯
## make
這個編譯時間比較久。
以下內容,現在不是很理解,只是照著做了。
5,安裝,一定是root
## make install
幾分鐘之後就安裝了。
6,啟動命名服務
## $TAO_ROOT/orbsvcs/Naming_Service/tao_cosnaming -m 1
以上命令可能隨版本的變化而變化,具體請看,ACE_wrappers\TAO\docs\tutorials\Quoter\index.html 下文件“TAO's Naming Service”一項。
如果沒有第5步就會出現這個問題,
## $TAO_ROOT/orbsvcs/Naming_Service/tao_cosnaming -m 1
/home/guoyanzhang/ACE_wrappers/TAO/orbsvcs/Naming_Service/tao_cosnaming: error while loading shared libraries: libTAO_ImR_Client.so.2.5.3: cannot open shared object file: No such file or directory
7, 啟動事件服務
## $TAO_ROOT/orbsvcs/CosEvent_Service/tao_cosevent
以上命令可能隨版本的變化而變化,具體請看,ACE_wrappers\TAO\docs\tutorials\Quoter\index.html 下文件“TAO's COS Event Service”一項。
如果沒有第5步,就會有這個問題,
## $TAO_ROOT/orbsvcs/CosEvent_Service/tao_cosevent
/home/guoyanzhang/ACE_wrappers/TAO/orbsvcs/Naming_Service/tao_cosnaming: error while loading shared libraries: libTAO_IORTable.so.2.5.3: cannot open shared object file: No such file or directory
結果我在開啟這個服務的時候出現以下問題,
## $TAO_ROOT/orbsvcs/CosEvent_Service/tao_cosevent
(30427|140682155001664)EXCEPTION,/home/guoyanzhang/ACE_wrappers/TAO/orbsvcs/CosEvent_Service/tao_cosevent
system exception,ID 'IDL:omg.org/CORBA/TRANSIENT:1.0'
OMG minor code (2),described as 'No usable profile in IOR.',completed=NO
查了一下,我判斷可能是硬體環境導致的。(目前還無此需求,這個問題做為遺留問題)
可參考http://kb.cloudblue.com/en/116374
ACE_wrappers\TAO\docs\tutorials\Quoter\index.html提到了測試方法,但是client和server怎麼得到?
解決方法:
其實很簡單,增加一下這個就好了,
## vi ~/.bashrc
export LD_LIBARY_PATH=$LD_LIBRARY_PATH:$ACE_ROOT/ace:$ACE_ROOT/lib:$TAO_ROOT
我在github裡面求助了jwillemsen,才解決的,連結https://github.com/DOCGroup/ACE_TAO/issues/756
裡面有我測試的例子,我這裡就不詳細寫了,那裡寫的很清楚。
8,啟動通知服務
## $TAO_ROOT/orbsvcs/Notify_Service/Notify_Service -Factory NotifyEventChannelFactory -NameSvc -Channel NotifyEventChannel -ORBRunThreads 1 -ORBEndpoint iiop://199.3.13.7:12002
以上命令可能隨版本的變化而變化,具體請看,ACE_wrappers\TAO\orbsvcs\Notify_Service\README。
9,檢查服務執行狀況
## netstat -an | grep 1200
10,測試(這步有疑問,以後再解決)
## cd $TAO_ROOT/orbsvcs/tests
## $ACE_ROOT/bin/mwc.pl tests.mwc
## make