Linux redhat ICE环境安装

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