Cross-compilation of EVerest¶
This is a how-to-guide on cross-compiling EVerest for a Yocto-based Linux system.
For in-depth explanations about using EVerest with Linux and Yocto, please refer to the Linux / Yocto explanations.
Building a Yocto SDK¶
A Yocto SDK can be built once you have a working image. The SDK uses the information from your image to determine what is needed to build a cross compilation tool chain.
The SDK can be built once and the generated file made available to developers.
To build an SDK that can be used for cross-compilation, after sourcing your Yocto environment you will just have to run
bitbake IMAGE_NAME -c populate_sdk
After that you will be able to find the installer of your
newly-generated SDK under deploy*/sdk/.
Cross-compiling EVerest using a Yocto SDK¶
Before you can cross-compile EVerest for your target system, you will have to acquire a Yocto SDK that is based on the Yocto image that is currently running on the target you want to cross-compile for.
You can either build one yourself <exp_cross_compilation_building_an_sdk> or be supplied with one by the organization that is building and maintaining the Yocto image you are using.
Tip
You can download an SDK for the phyVERSO board here: [SDK BaseCamp/phyVERSO](http://pionix-update.de/phyverso/1.0.0/phytec-ampliphy-rauc-glibc-x86_64-phyverso-basecamp-image-aarch64-toolchain-BSP-Yocto-Ampliphy-AM62x-PD23.2.1-phyVERSO-EVCS.sh). To install the SDK, follow the steps below.
Whether you have created an SDK by yourself or are supplied with one, the first step you will have to do will be to install the SDK on your development machine. For that, you will first have to make the SDK installer file executable and execute it.
chmod +x name_of_sdk_installer.sh
./name_of_sdk_installer.sh
After that, the installer will ask you for the path in which you want to install the SDK in.
You are free to install it in your preferred directory.
Whenever you want to do any compilations using this SDK/cross-toolchain, you will have to source the respective environment-setup file of the given SDK, which resides in the SDK’s install location.
To source the cross-toolchain environment use the following syntax:
source /path/to/sdk/environment-setup-XYZ.sh
XYZ depends on the architecture and distribution name of your Yocto
image/SDK.
Use ls or tab-completion to find the full name of the
environment-setup-*.sh you want to use.
Now that the SDK is installed on your development machine and you know how to source the cross-toolchain, we can start fetch the EVerest sources and cross-compile them using the SDK-supplied toolchain.
Clone the everest-core repository and checkout the branch/tag/commit you
want to cross-compile.
git clone git@github.com:EVerest/everest-core.git
cd everest-core
git checkout TAG
Warning
Make sure to source the SDK’s toolchain first before continuing!
You can now create a build-cross directory, where you will do your
cross-compilation and run cmake with your desired additional flags.
cmake -S. -Bbuild-cross -DCMAKE_INSTALL_PREFIX=/var/everest
cd build-cross
make -j16
DESTDIR=dist make install
rsync -av dist/ root@192.168.3.11:/var/everest
This will cross-compile and “install” EVerest into
everest-core/build-cross/dist/ and rsync the cross-compiled
EVerest to your target (the next command assumes that your target is
accessible at 192.168.3.11):
You can now SSH into your target and stop the normally running
everest process:
systemctl stop everest
After that, you can start your cross-compiled EVerest via:
LD_LIBRARY_PATH=/var/everest/lib:$LD_LIBRARY_PATH /var/everest/bin/manager --prefix /var/everest/ --config /path/to/your/config
Note
With --prefix you specify the path of the EVerest installation. Some modules
may use this path to find their resources (e.g. certificates, config files, etc.).
Authors: Cornelius Claussen, James Chapman