AIX開(kāi)發(fā)環(huán)境介紹
2006-03-05 12:14:04 作者:秦寶軍 來(lái)自:http://www-900.ibm.com
隨著IBM pSeries服務(wù)器市場(chǎng)占有率的不斷增加,AIX操作系統(tǒng)也為越來(lái)越多的IT業(yè)者所喜愛(ài)。AIX作為UNIX家族中出色的一員,有著豐富的開(kāi)發(fā)環(huán)境,AIX******的版本為AIX 5L版本2,***常見(jiàn)的版本為4.3.3,以5L版本為例,缺省安裝直接支持J2EE,這里主要介紹AIX系統(tǒng)的C/C++開(kāi)發(fā)部分。
首先應(yīng)當(dāng)清楚,AIX并不集成C/C++,要使用這部分功能,必須安裝IBM C或者Visual Age C++(包含C編譯器),這篇文章只介紹Visual Age C++,將按照Visual Age C++的安裝、配置、編譯器的使用、程序調(diào)試的順序介紹,使用的平臺(tái)為AIX 5L。
安裝Visual Age C++
Visual Age C++要在AIX 5L上使用,******的版本為5.0.2,******的版本為6.0。Visual Age C++是一個(gè)功能強(qiáng)大的集成開(kāi)發(fā)環(huán)境,和Windows平臺(tái)的Visual C++一樣,從項(xiàng)目的管理、編輯、編譯、調(diào)試等各方面,提供一系列完善的圖形化的操作界面。要完全安裝(包含IDE圖形界面)Visual Age C++,可遵循以下步驟:
1) 確定IDE圖形界面需要的Motif文件集已經(jīng)安裝,命令如下:
lslpp -l X11.compat.adt.Motif12
如沒(méi)有安裝,應(yīng)先從AIX操作系統(tǒng)安裝介質(zhì)安裝這一文件集。
2) 將Visual Age C++的安裝介質(zhì)放入機(jī)器的光驅(qū)中
注意,如果是Visual Age C++的產(chǎn)品盤,并不需要mount CD盤
3) 開(kāi)始安裝Visual Age C++文件集,命令如下:smitty install_latest
安裝目錄選擇光區(qū),使用F4鍵選擇,如下,
回車后將顯示如下界面:
如需要選擇安裝部分文件集,可在_all_latest菜單項(xiàng)下按F4鍵,使用F7鍵選擇要安裝的文件集,按回車鍵即可。
上面介紹的是是一種完整的安裝方式,如果只是使用C/C++的編譯器,不許要安裝Visual Age C++的圖形界面,可借助于下面的命令:
installp -aXgd /dev/cd0 vacpp.cmp
這條命令的運(yùn)行結(jié)果是安裝我們需要的所有文件集。
配置Visual Age C++
正確安裝完Visual Age C++以后,還不能立刻使用,需要配置使用許可才可以正確使用。Visual Age C++的使用許可通過(guò)LUM(License Use Management)系統(tǒng)管理,所以正確的配置方法是先配置LUM服務(wù)器,再配置Visual Age C++的使用許可。
******步:配置LUM
LUM在AIX 4.3.3及5L版本中是一個(gè)必須的部件,系統(tǒng)的初始安裝過(guò)程中已經(jīng)安裝,但是并沒(méi)有配置,使用i4cfg命令配置,如下:
# cd /usr/opt/ifor/bin
# ./i4cfg -a n -S a
這條命令將配置LUM成為并發(fā)的節(jié)點(diǎn)鎖定服務(wù)器工作方式(Concurrent Nodelock Server),如果沒(méi)有錯(cuò)誤輸出,下一步是啟動(dòng)LUM服務(wù)器:
# ./i4cfg -start
之后,可以用以下命令檢測(cè)LUM服務(wù)器的工作狀態(tài):
# ./i4cfg -list
將顯示為:
第二步:配置Visual Age C++的使用許可
正確安裝Visual Age C++產(chǎn)品以后,可以在/usr/vac和/usr/vacpp兩個(gè)目錄下看到后綴為lic的文件,這些文件記載了Visual Age C++的使用許可協(xié)議,需要做的就是將需要的許可協(xié)議添加到LUM的管理中。使用的命令為i4blt,使用方法為:
i4blt -a -f license_file_name -R u -T license_num
具體過(guò)程如下:
首先添加C的使用許可,
#cd /usr/opt/ifor/bin
#./i4blt -a -f /usr/vac/cforaix_cn.lic -R u -T 10
然后再配置C++的使用許可,
#./i4blt -a -f /usr/vacpp/vacpp_cn.lic -R u -T 10
在上面的例子中配置的許可數(shù)為10,正確的配置完后可通過(guò)如下命令驗(yàn)證許可數(shù)是否正確或許可協(xié)議有沒(méi)有正確的被添加,
i4blt -sl cn
注意以上的配置是在AIX 5L版本上進(jìn)行的,如在AIX 4.3.3版本上,則i4cfg、i4blt命令存在/var/ifor/bin目錄下。
Visual Age C++的使用
安裝、配置以后,可以使用C/C++編譯器了,但當(dāng)你運(yùn)行cc時(shí)卻發(fā)現(xiàn),cc沒(méi)有找到,不必懷疑安裝的正確性,這是沒(méi)有設(shè)置環(huán)境變量的緣故,在/usr/vac/bin目錄下有一個(gè)腳本文件replaceCSET,它會(huì)完成這一切。
可以用一個(gè)經(jīng)典的小程序hello.c來(lái)測(cè)試一下編譯器的正確性,程序內(nèi)容如下:
#include
main() {
printf("Hello!\n");
}
編譯、連接:
cc -o hello hello.c
將生成hello可執(zhí)行程序。
一般情況下,我們習(xí)慣直接使用cc編譯程序,實(shí)際上AIX的C/C++編譯器還提供了其他的使用方法,如后綴為_(kāi)r就有xlc_r、xlC_r,這里我們做一個(gè)完整的介紹。
AIX平臺(tái)上缺省的C++編譯器為xlC,而C的編譯器有三個(gè):
cc: 這是***習(xí)慣用的,擴(kuò)展模式的C編譯器
xlc: ANSI C編譯器,使用UNIX的頭文件
c89: ANSI C編譯器,使用ANSI頭文件
具體選擇何種編譯器,需根據(jù)程序的情況來(lái)選擇,一般我們可以使用cc。另外,還有一些后綴供我們選擇,結(jié)合以上的基本編譯器,給我們提供了更大的選擇范圍,如下:
_r 連接UNIX98標(biāo)準(zhǔn)線程庫(kù)
_r4 連接POSIX Draft4(DCE)標(biāo)準(zhǔn)線程庫(kù)
_r7 連接POSIX Draft7標(biāo)準(zhǔn)線程庫(kù)
128 Double型類型為128位并使用連接相關(guān)的庫(kù)
128_r Double類型為128位并使用UNIX98線程庫(kù)
128_r4 Double類型為128為并使用連接POSIX Draft4線程庫(kù)
128_r7 Double類型為128位并使用連接POSIX Draft7線程庫(kù)
另外,UNIX98已經(jīng)兼容涵蓋了UNIX95、POSIX標(biāo)準(zhǔn)的內(nèi)容,所以,如果程序中使用到線程函數(shù),只許增加后綴_r就可以了。舉例說(shuō),編譯連接ANSI C并使用POSIX線程庫(kù),可以使用xlc_r編譯器,當(dāng)然也可以使用xlc -lpthread的形式。
這里提到的只是***基本的東西,還有很多方面的內(nèi)容并沒(méi)有介紹到,例如如何生成使用動(dòng)態(tài)庫(kù),這些更詳細(xì)的東西需要參考相關(guān)的手冊(cè),或撥打IBM技術(shù)支持電話尋求技術(shù)支持。
程序調(diào)試
調(diào)試程序比較復(fù)雜,一方面需要我們借助一些調(diào)試工具,如dbx 、truss、tprof等,另一方面也需要我們具有一些調(diào)試經(jīng)驗(yàn)。
這里介紹一個(gè)用dbx調(diào)試運(yùn)行中的程序的方法,重點(diǎn)在于調(diào)試步驟,而不在于dbx工具的使用,以一個(gè)簡(jiǎn)單的程序?yàn)槔绦驗(yàn)椋?
#include
main() {
long count=0;
int loop_count;
while(1) {
count *= (count++);
printf(" Test debug, count : %ld\n", count);
for (loop_count = 0; loop_count < 10; loop_count++) {
sleep(1);
}
}
}
程序名為dbg.c
調(diào)試步驟如下:
1) 編譯dbg.c
xlc -g -o dbg dbg.c
2) 運(yùn)行dgb程序
./dbg
3) 查看dbg程序的進(jìn)程ID
ps -ef | grep dbg | grep -v grep
假設(shè)dbg的PID為12345
4) 調(diào)試dbg程序
dbx -a 12345
5) 這時(shí)我們運(yùn)行dbx的命令調(diào)試dbg程序了,下面是幾個(gè)常用的命令:
step : 單步運(yùn)行
stop at line_number : 在某一行設(shè)置斷點(diǎn)
stop in subroutine_name: 設(shè)置斷點(diǎn)到某一個(gè)函數(shù)
cont : 繼續(xù)運(yùn)行
6) 退出調(diào)試
注意退出時(shí)應(yīng)使用detach而不是exit,否則會(huì)影響程序的運(yùn)行,導(dǎo)致程序退出。
這篇文章只是簡(jiǎn)單介紹AIX的開(kāi)發(fā)環(huán)境,實(shí)際工作中用到的內(nèi)容將遠(yuǎn)遠(yuǎn)不止這些知識(shí),需要開(kāi)發(fā)者查閱大量的相關(guān)資料,或訪問(wèn)以下網(wǎng)址:
http://www-900.ibm.com/developerWorks/cn/index.shtml