`

ICE在Linux下的完整编译安装

阅读更多
ICE在Linux下的完整编译安装
  安装平台要求:最好用gcc 4.x版编译ICE,在Slackware下发现gcc3.3.6和gcc3.4.6都无法编译通过
  为了方便管理,将ICE相关的软件都安装到/usr/local/ICE-3.3.0/目录下
  安装python
  
  ./configure --enable-shared
  make
  make install
  
  
  
  首先 安装第三方包:ThirdParty-Sources-3.3.0.tar.gz
  解压 ThirdParty-Sources-3.3.0.tar.gz
  # cd ThirdParty-Sources-3.3.0
  
  1)mcpp is a C/C++ preprocessor
  ------
  解压 mcpp-2.7.2.tar.gz
  # cd mcpp-2.7.2
  # ./configure --prefix=/usr/local/ICE-3.3.0/mcpp-2.7.2/ CFLAGS=-fPIC -enable-mcpplib -disable-shared
  # make
  # make install
  
  2)Berkeley DB 是一个高性能的,嵌入数据库编程库,和C语言, C++, Java, Perl, Python, Tcl以及其他很多语言都有绑定。
  --------
  解压 db-4.6.21.NC.tar.gz
  # cd db-4.6.21.NC
  # cd build_unix
  # ../dist/configure --prefix=/usr/local/ICE-3.3.0/BerkeleyDB.4.6/ -enable-cxx
  # make
  # make install
  
  3)bzip2 是 Julian Seward 开发并按照自由软件/开源软件协议发布的数据压缩算法及程序
  --------
  解压 bzip2-1.0.5.tar.gz
  # cd bzip2-1.0.5
  修改Makefile,将PREFIX指向/usr/local/ICE-3.3.0/bzip2-1.0.5
  # make
  # make install
  
  4) expat 是一个 XML parsing C library
  --------
  解压 expat-2.0.1.tar.gz
  # cd expat-2.0.1
  # ./configure --prefix=/usr/local/ICE-3.3.0/expat-2.0.1/
  # make
  # make install
  
  5) openssl 是 Secure Socket Layer (SSL) binary and related cryptographic tools
  --------
  解压 openssl-0.9.8g.tar.gz
  # cd openssl-0.9.8g
  # ./config --prefix=/usr/local/ICE-3.3.0/openssl
  # make
  # make install
  
  现在正式安装 Ice-3.3.0.tar.gz
  --------
  解压 Ice-3.3.0.tar.gz
  1) 编译 cpp版本:
  # cd Ice-3.3.0/cpp
  # vi config/Make.rules
  
  ...
  #
  # Select an installation base directory. The directory will be created
  # if it does not exist.
  #
  
  # prefix ?= /opt/Ice-$(VERSION)
  prefix ?= /usr/local/ICE-3.3.0/Ice-$(VERSION)
  
  #
  # The "root directory" for runpath embedded in executables. Can be unset
  # to avoid adding a runpath to Ice executables.
  #
  
  # embedded_runpath_prefix ?= /opt/Ice-$(VERSION_MAJOR).$(VERSION_MINOR)
  embedded_runpath_prefix ?= /usr/local/ICE-3.3.0/Ice-$(VERSION_MAJOR).$(VERSION_MINOR)
  ...
  #
  #
  # If libbzip2 is not installed in a standard location where the
  # compiler can find it, set BZIP2_HOME to the bzip2 installation
  # directory.
  #
  BZIP2_HOME ?= /bzip2-1.0.5
  
  # If Berkeley DB is not installed in a standard location where the
  # compiler can find it, set DB_HOME to the Berkeley DB installation
  # directory.
  
  #
  #DB_HOME ?= /opt/db
  DB_HOME ?= /usr/local/ICE-3.3.0/BerkeleyDB.4.6
  
  #
  # If expat is not installed in a standard location where the compiler
  # can find it, set EXPAT_HOME to the expat installation directory.
  #
  
  #EXPAT_HOME ?= /opt/expat
  EXPAT_HOME ?= /usr/local/ICE-3.3.0/expat-2.0.1
  
  #
  # If OpenSSL is not installed in a standard location where the
  # compiler can find it, set OPENSSL_HOME to the OpenSSL installation
  
  # directory.
  #
  #OPENSSL_HOME ?= /opt/openssl
  OPENSSL_HOME ?= /usr/local/ICE-3.3.0/openssl
  
  #
  # If Mcpp is not installed in a standard location where the compiler
  # can find it, set MCPP_HOME to the Mcpp installation directory.
  #
  
  #MCPP_HOME ?= /opt/mcpp
  MCPP_HOME ?= /usr/local/ICE-3.3.0/mcpp-2.7.2
  ...
  特别注意: cpp/config/Make.rules的相关第三方库的路径
  # make
  # make install
  
  2)编译python 版本
  # cd Ice-3.3.0/py
  # vi config/Make.rules
  修改方法参考cpp部分描述
  # make
  # make install
  
  设置ICE环境变量
  #vi /etc/profile
  
  export PYTHONPATH=/usr/local/ICE-3.3.0/Ice-3.3/python/:
  export ICE_HOME=/usr/local/ICE-3.3.0/Ice-3.3
  export PATH=$PATH:$ICE_HOME/bin
  export LD_LIBRARY_PATH=$ICE_HOME/lib
  export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC ICE_HOME
  #source /etc/profile
  
  
  安装过程出现的问题:
  第一
  /usr/bin/ld: /usr/local/python27/lib/python2.7/config/libpython2.7.a(abstract.o): relocation R_X86_64_32 against `a local symbol' can not be used when making a shared object; recompile with -fPIC
  /usr/local/python27/lib/python2.7/config/libpython2.7.a: could not read symbols: Bad value
  解决:重新安装python 加入--enable-shared
  第二
  error while loading shared libraries: libpython2.7.so.1.0: cannot open shared object file
  解决:
  Whereis libpython2.7.so.1.0
  LB_DEBUG=libs python –V 查看缺少的库
  做个软连接即可
  第三
  ICE的编译报错 libIce.so: undefined reference to `libiconv',解决:
  这个问题很恶心,是ICE自己makefile的问题,找到cpp/config/Makefile.rules中,找到193行 :
  ICONV_LIBS = $(if $(ICONV_HOME),-L$(ICONV_HOME)/$(libsubdir)) $(ICONV_LIB)
  把这一行修改成下面的就好了, ICONV_LIB根本没有定义
  ICONV_LIBS = $(if $(ICONV_HOME),-L$(ICONV_HOME)/$(libsubdir)) -liconv
  
  
  
  安装过程可能还会有其他的问题,比如64位的机器lib包名为lib64 ,可以根据错误信息提示响应的做修改,把lib包做个软连接到lib64等。
分享到:
评论

相关推荐

    Linux下安装ICE包

    总之,Linux下安装ICE包涉及下载、解压、编译、安装和配置等多个环节,每个环节都需要仔细操作,确保所有依赖都已满足,才能成功安装并正常使用ICE。同时,熟悉ICE的使用方法和编程模型,将有助于你更好地利用这个...

    Ice-3.7.0 下载地址、安装及源码

    Ice Ice-3.7.0 linux windows mac os docker java js python ruby source Download Ice 3.7 Version: 3.7.0 - July 21, 2017 You are licensing Ice under GPLv2 unless you purchase a commercial license.

    LINUX下简单的编译和使用动态链接库

    在 WINDOWS 下,使用 VC++ 可以方便地生成 DLL 文件,而在 LINUX 下,则需要通过各种编译命令来实现。例如,使用 `c++` 编译器和 `gcc` 编译器来编译和链接生成动态链接库。 下面是一个简单的例子,用于生成一个 ....

    ICE-demo2.tar.gz_ICE_linux ICE C++

    描述中提到"ice方面的例子,包括服务端和客户端,在linux下编译成功",这表明这个压缩包包含了ICE框架下的一个完整示例,涵盖了服务器端和客户端的代码。这意味着用户可以在Linux环境下编译并运行这些代码,体验ICE...

    Ice_install.rar_ICE_ISCE install_ice lin_ice linux

    在Linux环境下安装ICE之前,需要确保系统已经安装了必要的依赖库。这些可能包括C++编译器、库文件和开发工具,例如GCC、Make、Git等。使用以下命令安装: ```bash sudo apt-get update sudo apt-get install build-...

    linux平台下的ice通信中间件

    在RHEL5(Red Hat Enterprise Linux 5)环境下,ICE提供了丰富的功能和组件,以满足跨平台通信的需求。 在提供的压缩包文件中,我们可以看到以下组件: 1. `ice-utils-3.3.0-1.rhel5.i386.rpm`:这是ICE工具集,...

    ICE.rar_ICE_ice lin_linux i

    ICE.rar_ICE_ice lin_linux i 这个压缩包文件主要关注的是ICE内核在Linux环境下的配置和编译过程,适用于对ICE环境进行搭配和内核修改的场景。ICE,通常代表某个特定的软件或技术,可能是操作系统的一个组件或者一个...

    Ice 3.4.1 在ARM上移植, 源代码补丁

    ICE 3.4.1 在移植到ARM Linux中时,double型的数据会有错误。见我在ZeroC发的帖子: http://www.zeroc.com/forums/bug-reports/5308-double-data-format-arm-linux-not-correct.html 在移植前,需要对源代码进行一些...

    ICE3.5开发开发完整示例

    6. **Ice-3.5.1-demos目录**:这个目录下的文件可能包括了各种语言的源码示例、编译脚本、配置文件和文档。通过这些示例,开发者可以了解如何安装、配置和运行ICE3.5,以及如何组织和管理自己的ICE项目。 7. **关键...

    ICE+vs2015的安装文件

    这个插件为开发者提供了集成的IDE支持,使他们能在Visual Studio 2015环境中编写、编译和调试使用ICE的代码。iceBuilder提供了诸如代码自动完成、错误检查和调试工具等功能,极大地提高了开发效率和代码质量。 ICE...

    Ice-3.5.1-el6-x86_64-rpm.tar.gz

    通过这些RPM包,用户可以在EL6环境中安装并使用完整的Ice框架,包括不同语言的客户端和服务器端支持,以及必要的开发工具和库。这些组件的分离使得用户可以根据需要选择安装,比如仅在开发环境中安装开发包,在生产...

    ICE3.3版安装及配置。

    在安装ICE 3.3时,首先需要从官方网站或者指定的链接下载对应平台的安装包。安装过程中,需要注意选择正确的操作系统版本,并根据系统环境配置相应的路径。对于Windows系统,通常会有一个可执行的安装程序,只需按照...

    ice异步模式源码实例

    标题"ice异步模式源码实例"指的是通过C++在Linux环境下使用ICE框架实现AMD和AMI模式的服务端和客户端,以便进行双向通信。这种通信方式允许服务端和客户端同时处理多个请求,提高系统的响应速度和效率。 描述中的...

    ice_all_centos7_arm64.tgz

    《ZeroC ICE在Linux ARM64环境下的安装与配置指南》 ZeroC ICE(Internet Communications Engine)是一款跨平台、高性能的中间件,用于构建分布式系统。它提供了多种编程语言的接口,包括C++、Java、Python等,使得...

    rtl8821ce-Linux驱动.zip

    3. 若是源代码,用户可能需要先安装必要的编译工具(如make, gcc等),然后在源代码目录下执行配置、编译和安装命令,例如:`./configure`, `make`, `sudo make install`。 4. 安装完成后,重启系统,然后在终端中...

    RCP中间件ICE资源

    3. **跨平台**:ICE可在Windows、Linux、macOS等各种操作系统上运行,实现跨平台通信。 4. **自动序列化和反序列化**:ICE处理数据的序列化和反序列化,使得不同系统间的数据交换变得简单。 5. **负载均衡和故障恢复...

    libevent对应Android下的库文件

    描述中提到的"Ubuntu下用NDK交叉编译",意味着开发环境是在Ubuntu操作系统上,使用了Android Native Development Kit (NDK) 来进行编译。NDK是Google提供的一套工具,允许开发者用C/C++编写原生代码,然后将其集成到...

    intel网卡驱动ice-1.9.11

    2. 预编译检查:在安装驱动前,需要确保系统满足必要的依赖条件,例如GCC编译器、kernel-devel包等。可以使用`yum install kernel-devel gcc`命令来安装这些依赖。 3. 编译驱动:进入解压后的驱动源码目录,执行`...

Global site tag (gtag.js) - Google Analytics