本文詳細(xì)描述了在Linux操作系統(tǒng)上安裝和配置“自適應(yīng)通信環(huán)境(ACE)”的過程和注意事項(xiàng)。zCkLinux聯(lián)盟
文中的描述基于RedHat Linux 9操作系統(tǒng)和ACE 5.4版zCkLinux聯(lián)盟
準(zhǔn)備工作:zCkLinux聯(lián)盟
1.確保你的Linux操作系統(tǒng)的開發(fā)環(huán)境(gcc、make……)是完整且可用的。zCkLinux聯(lián)盟
2.在安裝ACE的過程中,可能需要root權(quán)限,因此確保你擁有root帳戶的密碼。zCkLinux聯(lián)盟
3.對(duì)于典型的Redhat9系統(tǒng),autoconf程序的版本可能過低,你需要首先升級(jí)它。zCkLinux聯(lián)盟
升級(jí)的步驟如下:zCkLinux聯(lián)盟
- 在控制臺(tái)中輸入 autoconf -V,查看你的autoconf程序的版本
- 如果低于2.57g,你需要到http://www.gnu.org/software/autoconf/去下載最新版本的autoconf程序,目前autoconf程序的版本是2.59
- 根據(jù)tarball中的安裝說明,編譯并安裝升級(jí)autoconf程序
開始安裝:zCkLinux聯(lián)盟
經(jīng)過上面的準(zhǔn)備工作,現(xiàn)在你已經(jīng)具備了安裝ACE的條件。下面開始正式的安裝工作。zCkLinux聯(lián)盟
- 首先確定ACE的安裝路徑,并建立相應(yīng)的目錄。zCkLinux聯(lián)盟
這里,我們把ACE安裝在/home/zhc/ace/的目錄下,先執(zhí)行zCkLinux聯(lián)盟
mkdir /home/zhc/ace
- 然后將獲得的ACE源代碼包解至該目錄下。zCkLinux聯(lián)盟
tar zxvf ACE-5.4.tar.gz /home/zhc/ace
- 這時(shí),在ace的目錄下會(huì)建立一個(gè)名為ACE_wrappers的子目錄,ACE所有的源代碼、工具、和例子都在這個(gè)目錄中。zCkLinux聯(lián)盟
先進(jìn)入該目錄,執(zhí)行zCkLinux聯(lián)盟
cd /home/zhc/ace/ACE_wrapperszCkLinux聯(lián)盟
然后建立一個(gè)子目錄,用于存放ACE編譯后的目標(biāo)文件zCkLinux聯(lián)盟
mkdir buildzCkLinux聯(lián)盟
cd build
- 接著,執(zhí)行configure腳本,檢查你的系統(tǒng)環(huán)境,配置并生成適合你的系統(tǒng)的Makefile文件。zCkLinux聯(lián)盟
在執(zhí)行configure腳本時(shí),可以加入許多配置選項(xiàng),其詳細(xì)說明可以參看ACE_wrappers目錄下的ACE-INSTALL.html文件,zCkLinux聯(lián)盟
對(duì)于Redhat9系統(tǒng)來說,不必加任何參數(shù),ACE就可以很好的工作了。zCkLinux聯(lián)盟
../configure
- 在漫長的檢查和配置之后,如果沒有什么問題,你就可以開始編譯了。zCkLinux聯(lián)盟
這一步很簡單,執(zhí)行zCkLinux聯(lián)盟
makezCkLinux聯(lián)盟
然后,泡一杯茶,靜靜的等待就行了。
- 如果編譯順利的通過(通常都會(huì)是這樣的),那么恭喜你,你已經(jīng)成功了一大半了,下面要做的僅僅是以些配置工作而已。zCkLinux聯(lián)盟
接下來的工作是安裝,這一步是可選的,目的是把編譯生成的ACE的庫文件、頭文件和手冊(cè)頁等安裝到/usr/local的相應(yīng)目錄中去,為了今后使用的方便,我建議你還是進(jìn)行這一步,執(zhí)行zCkLinux聯(lián)盟
suzCkLinux聯(lián)盟
root's passwordzCkLinux聯(lián)盟
make install
- 安裝之后,我們就可以進(jìn)行最后的配置工作了。zCkLinux聯(lián)盟
首先設(shè)置環(huán)境變量ACE_ROOT,執(zhí)行zCkLinux聯(lián)盟
setenv ACE_ROOT /home/zhc/ace/ACE_wrapperszCkLinux聯(lián)盟
注意其中的路徑要根據(jù)你的實(shí)際情況而定zCkLinux聯(lián)盟
如果你不想每次都手工設(shè)定路徑,可以編輯你的bash的配置文件,執(zhí)行zCkLinux聯(lián)盟
cdzCkLinux聯(lián)盟
vi .bash_profilezCkLinux聯(lián)盟
在其中填加如下兩行zCkLinux聯(lián)盟
ACE_ROOT=/home/work/research/ace/ACE_wrapperszCkLinux聯(lián)盟
export ACE_ROOT
- 然后,在$ACE_ROOT/ace目錄中創(chuàng)建一個(gè)名為config.h的文件,在其中包含如下一行zCkLinux聯(lián)盟
#include "ace/config-linux.h"zCkLinux聯(lián)盟
或者,簡單起見,你也可以直接建立一個(gè)指向config-linux.h的符號(hào)鏈接,執(zhí)行zCkLinux聯(lián)盟
ln -s config-linux.h config.h
- 同樣,在$ACE_ROOT/include/makeinclude目錄中創(chuàng)建一個(gè)名為platform_macros.GNU的文件,在其中包含如下一行zCkLinux聯(lián)盟
include $(ACE_ROOT)/include/makeinclude/platform_linux.GNUzCkLinux聯(lián)盟
或者,簡單起見,你也可以直接建立一個(gè)指向platform_linux.GNU的符號(hào)鏈接,執(zhí)行zCkLinux聯(lián)盟
ln -s platform_linux.GNU platform_macros.GNU
- 最后一步,設(shè)置環(huán)境變量LD_LIBRARY_PATH,執(zhí)行zCkLinux聯(lián)盟
setenv LD_LIBRARY_PATH $ACE_ROOT/ace:$ACE_ROOT/lib:zCkLinux聯(lián)盟
/usr/local/lib:$LD_LIBRARY_PATHzCkLinux聯(lián)盟
或者在~/.bash_profile文件中添加如下兩行zCkLinux聯(lián)盟
LD_LIBRARY_PATH=$ACE_ROOT/ace:$ACE_ROOT/lib:zCkLinux聯(lián)盟
/usr/local/lib:$LD_LIBRARY_PATHzCkLinux聯(lián)盟
export LD_LIBRARY_PATH
安裝完成:zCkLinux聯(lián)盟
經(jīng)過上面的步驟,ACE已經(jīng)安裝到了您的系統(tǒng)上了,下面我們將編譯并執(zhí)行ACE的例程以驗(yàn)證我們的工作。zCkLinux聯(lián)盟
這里我們以《C++網(wǎng)絡(luò)編程,卷一》所帶的例子為例。zCkLinux聯(lián)盟
- 進(jìn)入例程目錄,執(zhí)行zCkLinux聯(lián)盟
cd $(ACE_ROOT)/examples/C++NPv1
- 編譯例子程序,執(zhí)行zCkLinux聯(lián)盟
makezCkLinux聯(lián)盟
如果前面的安裝和配置正確,很快就能夠得到編譯后的例子程序。
- 分別執(zhí)行一個(gè)服務(wù)器程序(隨便哪一個(gè)都行)和一個(gè)客戶端程序(Logging_Client),如果程序運(yùn)行正確,說明前面的安裝和配置成功,下面你就可以開始你的ACE學(xué)習(xí)之旅了
補(bǔ)充
下載ace 5.6
在根目錄下建立一個(gè)文件夾
mkdir /ace
把下載的ace包移過去,解壓得到一個(gè)文件夾ACE_wrappers
然后進(jìn)入這個(gè)文件夾,看看里面的readme就可以曉得,linux下如何編譯和安裝
網(wǎng)上很多人說要建立一個(gè)config.h的文件,那是好多年前的老皇歷了,readme里面沒有說要建立這么個(gè)玩意,那就不建立。
直接進(jìn)入主題,編譯:
cd /ace/ACE_wrappers
mkdir build
cd build
../configure 我們使用默認(rèn)的option
make
make install
過程很快,然后我們進(jìn)入到/usr/local目錄下,可以看到include里面有ace要用的頭文件,lib里面有ace要用的庫文件
linux的庫文件 的搜索路徑如下:
/usr/include
/usr/local/include
/usr/lib/gcc-lib/i386-linux/2.95.2/include
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../include/g -3
/usr/lib/gcc-lib/i386-linux/2.95.2/../../../../i386-linux/include
因此,我們不用設(shè)置ace的頭文件了。
但是ace庫文件不是linux的自帶的默認(rèn)的庫文件,因此我們使用的時(shí)候要帶上,而ace現(xiàn)在的庫文件并不是系統(tǒng)的,先看一下默認(rèn)的:
默認(rèn)的動(dòng)態(tài)庫搜索路徑/lib和/usr/lib
我們把a(bǔ)ce所在的庫文件路徑添加進(jìn)去:
一:
在/etc/bashrc中加入:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
重啟
二:
打開/etc/ld.so.conf
本來內(nèi)容是如下:
include ld.so.conf.d/*.conf
我們添加ace路徑后變成如下
include ld.so.conf.d/*.conf
/usr/local/lib
保存退出!
然后執(zhí)行 ldconfig
就可以了。
下面我們弄一個(gè)簡單的ace程序:
/////////////////////////hello.cpp
#include "ace/OS.h"
#include "ace/Log_Msg.h"
int main (int argc, char *argv[])
{
ACE_DEBUG((LM_DEBUG,"Hello, ACE!\n"));
ACE_OS::exit(1);
return 0;
}
這么就不寫makefile了,直接用g++編譯就是了。
編譯
g++ hello.cpp -o hello -lACE
運(yùn)行:
./hello
結(jié)果:
[root@BTazuo ~]# ./hello
Hello, ACE!