ACE自適配通訊環境(ADAPTIVE Communication Environment)是可自由使用、開放源碼的物件導向(OO)架構(framework),它實現了許多用於並發通訊軟體的核心模式。ACE提供了一組豐富的可重用C++封裝外觀(wrapper facade)和架構組件,可跨多種平台,如Windows、Linux、WinCE、VxWorks等系統。它不僅實現了網路通訊,還有線程、進程、記憶體操作等,所以現在ACE的應用還是比較廣泛的。
它的源碼可以在www.riverace.com下載
下載後解壓出來一個ACE_wrappers檔案夾,將其放到某個目錄下面
然後更改~/.bash_profile檔案,添加如下代碼
- #這個目錄在編譯的時候會用到,因為所有的標頭檔都在/ACE_wrappers/ace/檔案夾下面
- #而且它的標頭檔包含形式都是<ace/Log_Msg.h>形式的
- ACE_ROOT=$HOME/ace/ACE_wrappers
- #這個是為了在程式啟動並執行時候用的,因為安裝好之後,它的動態庫,libACE.so等都放到這個目錄裡面了
- #如果這個不設定,程式找libACE.so找不到的話,就沒法正常運行
- LD_LIBRARY_PATH=$ACE_ROOT/lib:$LD_LIBRARY_PATH
- #匯出這兩個環境變數
- export ACE_ROOT
- export LD_LIBRARY_PATH
然後想辦法讓你的環境變數生效,因為我用的SecureCRT遠程登入的linux,所以斷開之後再串連,就生效了
然後再$ACE_ROOT/ace下面建立一個config.h
然後在裡面添加上如下代碼:
#include "ace/config-linux.h"
然後儲存就行了
(ace的好多標頭檔都要使用config.h,而且它跨平台,就是要靠這個檔案來區分的,在Windows下面,這個檔案的內容好像就好像改為了: #include "ace/config-win32.h")
然後在如下目錄:
$ACE_ROOT/include/makeinclude/
建立:
platform_macros.GNU
內容:
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNU
然後直接執行make命令,如果能成功執行完,就說明已經安裝好了
但我在make的時候就出現了兩個問題,開始提示某個sh指令碼的執行許可權不夠,我就手動加上執行許可權:
chmod +x file
後來又提示在指令碼中存在一些其它的錯誤,這時候用vi開啟這些指令碼,然後執行:
set ff? (這個命令查看當前文本的格式,ff,即file format)
如果出現:
fileformat=dos
則再執行如下的命令:
set ff=unix
然後儲存
這樣應該就能執行成功了
安裝好之後就可以拿一個簡單樣本來進行測試了
下面是簡單的hello world樣本
- #include <stdio.h>
- #include "ace/Log_Msg.h"
- #include "ace/OS_main.h"
- int ACE_TMAIN(int argc, ACE_TCHAR *argv[])
- {
- ACE_DEBUG((LM_DEBUG, "Hello World/n"));
- return 0;
- }
然後執行如下命令:
g++ -Wall -I $ACE_ROOT -L $ACE_ROOT/lib -l ACE -o hello hello.cpp
此時應該就產生了hello
./hello
Hello World