Ice-E brings Ice to embedded devices, in particular Linux/ARM devices. Ice-E adds cross-compilation capabilities to Ice: with Ice plus Ice-E, you can develop C++ applications for Linux/ARM systems on your Linux x86_64 workstation.
On this page:
Comparing Ice-E and Ice
Ice-E and Ice provide the same API and implement the same Ice protocol. Here is a brief comparison of these two products:
|Ice transports: tcp, ssl, ws, wss, udp|
|Client libraries for Ice services (IceGrid, IceStorm etc.)|
|Glacier2 firewall traversal service|
|Other Ice services (IceGrid, IceStorm, Freeze, IcePatch2)|
|Supports cross-compilation to Linux/ARM|
New features in Ice-E 3.6.0
This section outlines changes and improvements in this release that may affect the operation of your applications or have an impact on your source code.
- Ice-E is now fully in-sync with Ice:
- Ice-E uses the same developer kit as Ice: the Slice files, C++ header files, and Slice compiler (slice2cpp) are shared by Ice and Ice-E.
- The Ice-E and Ice versions are now the same.
- The preferred method to install Ice-E on Ubuntu is now through apt repositories.
- IceDiscovery, IceLocatorDiscovery, IceSSL, IceStringConverter and IceUtil are all included in the Ice static library.
Support for Ice 3.6.0 features
Ice-E 3.6.0 is based on the Ice 3.6.0 release. For more information see the Ice 3.6.0 Release Notes.
Using Plug-ins with Static Libraries
Ice-E provides only static libraries, which presents a challenge for loading plug-ins: since there is no shared library loading at run time, the plug-ins must be linked with your application.
Despite this difficulty, Ice-E offers plug-ins just like Ice, and provides the same built-in plug-ins:
You link these plug-ins with your application by calling the
Ice::registerPluginFactory function in your code, for example:
Refer to the Plug-in API for more information on
You can configure the plug-in using properties as usual.
IceStringConverter plug-ins are included in the
libIce.a static library. Ice 3.6.0 header files do not provide declarations for the corresponding plug-in factory functions, and as a result you need to provide your own declarations for these functions to register them. The names of these factory functions are always
create<PluginName>, for example
This mechanism isn't limited to the built-in Ice plug-ins – it can also be used to load your own plug-ins.
Upgrading your application from a previous version of Ice-E
Ice-E 3.6 is not compatible with previous versions of Ice-E. As part of your upgrade to Ice-E 3.6, you need to update your source code and recompile all your Slice files.