1.安装64位redhat6.4操作系统(客户机为64位)为软件开发工作站模式。
2.卸载yum源,重新安装为免费的CentOS6.4 yum源(yum能解决软件安装中的包依赖问题,redhat 未注册用户不能使用yum安装软件):
# mv /etc/yum.repos.d/*.repo /etc/yum.repos.d/*.repo.bak
#
删除原有的yum包
# rpm -qa | grep yum|xargs rpm -e --nodeps
# 下载CentOS的yum安装包
# 安装yum包
# 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 makecache
3.安装ICE环境:
下载rpm安装包安装ICE环境:不要使用源码安装(太麻烦并且容易出错)。
解压安装包Ice-3.4.2-rhel6-x86_64-rpm.tar.gz(可到官网下载)得到文件:
必须安装的软件和软件安装顺序(用yum安装自动解决包依赖问题,安装指令:# yum+空格+install +rpm包名):
db48-4.8.30-1ice.rhel6.x86_64.rpm
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