Using the Ice-E 3.6.0 Binary Distribution

This page provides important information for users of the Ice-E binary distribution.

On this page:

Overview of the Ice-E binary distribution

The Ice-E binary distribution provides the required packages to develop applications targeting Debian 7.8 (Wheezy) armhf and Ubuntu 15.04 (Vivid) amd64. The only supported development platform is Ubuntu 15.04 (Vivid) amd64; applications targeting Debian 7.8 (Wheezy) armhf are cross-compiled using a Ubuntu 15.04 (Vivid) amd64 machine. Ice-E is an add-on to Ice and uses the same Slice-to-C++ compiler, Slice files and C++ header files provided by the Ice C++ development package.

Ice-E has been extensively tested on the BeagleBone Black board (Rev C) with the default Debian distribution for this board.

DEB packages

ZeroC provides the following DEB packages for Ubuntu 15.04 (Vivid) amd64 and Debian 7.8 (Wheezy) armhf:

PackageDescription
libzeroc-icee-dev
C++ static libraries for developing Ice-E applications
zeroc-icee-glacier2Glacier2 service

Python wheel binary package

ZeroC provides the following Python package:

PackageDescription
zeroc_ice-3.6.0-cp27-none-linux_armv7l.whl
Ice for Python binary wheel for Python 2.7 Debian 7.8 (Wheezy) armhf

Installing the Ice-E binary distribution

Installing DEB packages

Use the following commands to install the development packages in Ubuntu Vivid. First you need to add the Ubuntu repository:

wget https://zeroc.com/download/GPG-KEY-zeroc-release
sudo apt-key add GPG-KEY-zeroc-release
sudo apt-add-repository "deb [arch=amd64,armhf] http://zeroc.com/download/apt/ubuntu15.04 stable main"

Before you can install packages from a foreign architecture, you must first tell dpkg about it. Run the following command to make dpkg aware of the armhf architecture:

sudo dpkg --add-architecture armhf
sudo apt-get update

Note that the apt-get update command will show some warnings for repositories that don't support the newly-added architecture. To avoid these warnings you can edit your repository lists and set the architectures supported by each repository (see "Setting up apt sources" in the Multiarch HOWTO).

Now you can install the armhf development libraries using the command shown below. These libraries are used for cross-compiling Ice-E applications for Debian Wheezy armhf.

sudo apt-get install libzeroc-ice-dev libzeroc-icee-dev:armhf

You can also install Ice-E development libraries for Ubuntu Vivid amd64 with the following command:

sudo apt-get install libzeroc-ice-dev libzeroc-icee-dev

The Glacier2 service is provided by the zeroc-icee-glacier2 package. For Ubuntu Vivid amd64, the package is included in the ubuntu15.04 repository shown above, and for Debian 7.8 (Wheezy) armhf you'll need to add an extra repository:

wget https://zeroc.com/download/GPG-KEY-zeroc-release
sudo apt-key add GPG-KEY-zeroc-release
sudo bash -c 'echo "deb http://download.zeroc.com/apt/debian7.8 stable main" > /etc/apt/sources.list.d/icee3.6.list'
sudo apt-get update

Setting up your cross development environment to use Ice-E

This section explains how to setup your cross development environment in Ubuntu 15.04 (Vivid) amd64 for developing applications targeting Debian 7.8 armhf. First we need to install a compatible cross tool-chain. For that purpose we will be using the g++-4.6-arm-linux-gnueabihf package available in the Ubuntu precise repository:

sudo apt-add-repository "deb [arch=amd64,i386] http://es.archive.ubuntu.com/ubuntu/  precise main"  
sudo apt-add-repository "deb [arch=amd64,i386] http://es.archive.ubuntu.com/ubuntu/  precise universe"
sudo apt-get update
sudo apt-get install g++-4.6-arm-linux-gnueabihf

Next you need to install the third-party libraries for the target OS. For your convenience we provide a script that downloads the required libraries from Debian 7.8 (Wheezy) repository and sets them up:

wget https://github.com/zeroc-ice/icee/raw/v3.6.0/config/install_wheezy_thirdparty.sh
sudo bash install_wheezy_thirdparty.sh

When cross compiling Ice-E applications you must use arm-linux-gnueabihf-g++-4.6 instead of g++. You also need to link your executable with the Ice static library and with the third-party libraries from the cross third party package.

Sample compile command:

arm-linux-gnueabihf-g++-4.6 -pthread Hello.cpp

Sample link command:

arm-linux-gnueabihf-g++-4.6 -L/opt/IceE-3.6.0-ThirdParty/usr/lib/arm-linux-gnueabihf -Wl,-rpath-link,/opt/IceE-3.6.0-ThirdParty/lib/arm-linux-gnueabihf \
    -o client Hello.o Client.o -lIce -lcrypto -lssl -pthread -lbz2 -ldl -lrt

Installing the Python wheel binary package

To install the Ice-E Python wheel binary package in Debian 7.8 (Wheezy) armhf, you'll first need to install a recent version of pip because the one included with the distribution doesn't support installing binary wheels. You can run the following command to upgrade to the latest pip version:

sudo pip install --upgrade pip

After upgrading pip, run the following commands to download and install our Python wheel:

wget https://zeroc.com/download/IceE/3.6/zeroc_ice-3.6.0-cp27-none-linux_armv7l.whl
sudo pip install zeroc_ice-3.6.0-cp27-none-linux_armv7l.whl


Using the Ice-E sample programs

Sample programs are available in a separate GitHub repository. Simply clone this repository and use its 3.6 branch:

git clone -b 3.6 https://github.com/zeroc-ice/ice-demos.git
cd ice-demos

The Ice-E demos for C++ and Python are located in the cpp and python directories respectively. Review the build instructions for more information.