Using Ice with Yocto
On this page:
Overview of Ice with Yocto
The Yocto Project allows you to create a custom Linux distribution for your embedded product. With ZeroC's meta layer for Yocto, you can easily include Ice for C++, Ice for Python and/or the Glacier2 service in this custom Linux distribution.
Development Boards
Ice was tested on:
Board | Yocto version |
---|---|
Freescale SABRE SD | 2.1 (Krogoth) with the Freescale Community BSP |
BeagleBone Black board (Rev C) | 2.1 (Krogoth) |
Meta Layer
Refer to the README.md file in the zeroc-ice/meta-zeroc repository.
Installing the Meta Layer
Installing the meta layer for ZeroC products is simply a matter of copying the contents of the repository onto your file system. For example, assuming you are using the poky repository, download the meta layer archive from the GitHub page and extract it alongside the other directories labeled meta-<name>
. Once this is done, source the poky environment configuration script and add the meta-zeroc
layer to the BBLAYERS
variable in your bblayers.conf
file:
BBLAYERS ?= " \ /home/zeroc/dev/poky/meta \ /home/zeroc/dev/poky/meta-yocto \ /home/zeroc/dev/poky/meta-yocto-bsp \ /home/zeroc/dev/poky/meta-zeroc \ "
Using the Meta Layer to install Ice
To include Ice in your image, add the package from the zeroc-ice
recipe you wish to use to your local.conf
file:
# Install Ice for C++ dynamic libraries and Ice for Python to image IMAGE_INSTALL_append = " zeroc-ice zeroc-ice-python" # Add the development package to the SDK TOOLCHAIN_TARGET_TASK_append = " zeroc-ice-dev zeroc-ice-staticdev" # Add the development package to the Native SDK TOOLCHAIN_HOST_TASK_append = " nativesdk-zeroc-ice-dev"
Setting up your cross development environment to use Ice
With the variables set in local.conf
as shown above, you can generate an SDK for your image with the following command:
bitbake core-image-minimal -c populate_sdk
Once complete, this SDK can be found in tmp/deploy/sdk
. Execute the .sh
file to install. By default your SDK will be installed into /opt/poky/<version>/
. You can then source the cross-development environment as follows:
source /opt/poky/2.1/environment-setup-cortexa9hf-vfp-neon-poky-linux-gnueabi
Using IceSSL with Platform CAs
To use the IceSSL.UsePlatformCAs
property you will need to install the ca-certificates
package as part of your image. Since OpenSSL does not have its default CAfile
(where IceSSL looks for the default platform CAs) set to the certificate bundle installed from ca-certifcates
you will need to set an additional IceSSL property:
IceSSL.CAs=/etc/ssl/certs/ca-certificates.crt
Using the Ice sample programs
Sample programs are available in the zeroc-ice/ice-demos repository:
git clone -b 3.6 https://github.com/zeroc-ice/ice-demos.git cd ice-demos
The Ice demos for C++ and Python are located in the cpp
and python
directories respectively. Review the build instructions for more information.