1.安裝64位redhat6.4操做系統(客戶機爲64位)爲軟件開發工做站模式。node
2.卸載yum源,從新安裝爲免費的CentOS6.4 yum源(yum能解決軟件安裝中的包依賴問題,redhat 未註冊用戶不能使用yum安裝軟件):python
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/*.repo.bak
# 刪除原有的yum包
# rpm -qa | grep yum|xargs rpm -e --nodeps
# 下載CentOS的yum安裝包
# 安裝yum包 c++
# rpm -ivh python-urlgrabber-3.9.1-11.el6.noarch.rpm
# rpm -ivh python-iniparse-0.3.1-2.1.el6.noarch.rpm
# rpm -ivh yum-metadata-parser-1.1.2-16.el6.x86_64.rpm
# rpm -ivh yum-3.2.29-73.el6.centos.noarch.rpm yum-plugin-fastestmirror-1.1.30-37.el6.noarch.rpm
# 添加163的yum源
# cd /etc/yum.repos.d
# wget http://mirrors.163.com/.help/CentOS6-Base-163.repo
# sed -i 's/\$releasever/6/g' CentOS6-Base-163.repo
# 清理yum緩存
# yum clean all
# 將服務器上的軟件包信息緩存到本地,以提升速度
# yum makecachesql
3.安裝ICE環境:shell
下載rpm安裝包安裝ICE環境:不要使用源碼安裝(太麻煩而且容易出錯)。centos
解壓安裝包Ice-3.4.2-rhel6-x86_64-rpm.tar.gz(可到官網下載)獲得文件:緩存
必須安裝的軟件和軟件安裝順序(用yum安裝自動解決包依賴問題,安裝指令:# yum+空格+install +rpm包名):服務器
db48-4.8.30-1ice.rhel6.x86_64.rpmeclipse
db48-utils-4.8.30-1ice.rhel6.x86_64.rpm測試
ice-3.4.2-1.rhel6.noarch.rpm
ice-libs-3.4.2-1.rhel6.x86_64.rpm
ice-c++-devel-3.4.2-1.rhel6.x86_64.rpm
ice-utils-3.4.2-1.rhel6.x86_64.rpm
ice-servers-3.4.2-1.rhel6.x86_64.rpm
ice-sqldb-3.4.2-1.rhel6.x86_64.rpm
4.設置ICE_HOME環境變量(參考ICE手冊和百度)。
5.(可選)安裝eclipseIDE和ICE插件:用於編寫代碼時檢查代碼錯誤(IDE編譯容易出各類問題,建議使用命令行)。
6.Makefile寫法參考百度,經常使用指令:
生成.o目標文件:
# c++ -I. -I$ICE_HOME/include -c -fPIC North.cpp InterfaceImpl.cpp IniFile.cpp Tools.cpp transformEncode.cpp
生成OutputStatus.so 共享庫文件:
# c++ -I. -I$ICE_HOME/include -shared -o OutputStatus.so North.o InterfaceImpl.o IniFile.o Tools.o transformEncode.o
生成測試demo可執行文件:
# c++ -I. -I$ICE_HOME/include -o demo.out StatusInfo.cpp InterfaceImpl.cpp IniFile.cpp Tools.cpp transformEncode.cpp CallApiDemo.cpp -lIce –lIceUtil
Makefile生成測試demo參考:
NorthDemo.out : CallApiDemo.o InterfaceImpl.o Tools.o North.o IniFile.o transformEncode.o
g++ -o NorthDemo.out -I. -I$ICE_HOME/include CallApiDemo.o InterfaceImpl.o Tools.o North.o IniFile.o transformEncode.o -lIce -lIceUtil
CallApiDemo.o : CallApiDemo.cpp
c++ -c CallApiDemo.cpp
Tools.o : Tools.cpp Tools.h IniFile.h transformEncode.h
c++ -c Tools.cpp Tools.h
IniFile.o : IniFile.cpp IniFile.h
c++ -c IniFile.cpp IniFile.h
transformEncode.o : transformEncode.cpp transformEncode.h
c++ -c transformEncode.cpp transformEncode.h
InterfaceImpl.o : InterfaceImpl.cpp InterfaceImpl.h North.h Tools.h
c++ -c InterfaceImpl.cpp InterfaceImpl.h Tools.h
North.o : North.cpp North.h
c++ -c North.cpp North.h
.PHONY : clean
clean :
rm -f $(fileO) NorthDemo.out CallApiDemo.o InterfaceImpl.o North.o Tools.o IniFile.o transformEncode.o OutputStatus.so
output:
c++ -I. -I$ICE_HOME/include -shared -o OutputStatus.so North.o InterfaceImpl.o Tools.o IniFile.o transformEncode.o
obj:
g++ -o NorthDemo.out -I. -I$ICE_HOME/include CallApiDemo.o -L. OutputStatus.so -lIce –lIceUtil
啓動demo 的shell腳本參考:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:.
./NorthDemo.out