.. _cross_compilation_setup: Cross Compilation Environment ############################# The SiMa DevKit comes pre-flashed with SiMa's Yocto Linux, a build system designed for creating custom Linux distributions tailored to embedded systems. Unlike Ubuntu, Yocto Linux does not include a package manager like ``apt``. Developers can create `custom Yocto builds `_ by introducing their own recipes or use the SiMa-provided Yocto SDK to cross-compile applications and third-party components from source code. For developers new to setting up a Yocto Linux build, it is still possible to build applications that run on the SiMa-provided Linux distribution. To setup cross compilation environment, follow the steps below: .. code:: bash user@palette-container-id:/home/docker/{project}$ source /opt/poky/4.0.23/environment-setup-cortexa65-poky-linux .. note:: The Yocto version may change from the above example when you update Palette. This setup configures the build environment to use the right toolchain and libraries for cross-compilation. The following commands shows various tools such as ``CXX`` and how they are configured: .. code:: bash user@palette-container-id:/home/docker/{project}$ env | grep -E 'CC|CXX|LD|SYSROOT|CROSS|TARGET' OECORE_TUNE_CCARGS= -mcpu=cortex-a65 -march=armv8.2-a+crypto -mbranch-protection=standard -mabi=lp64 SDKTARGETSYSROOT=/opt/poky/4.0.23/sysroots/cortexa65-poky-linux TARGET_PREFIX=aarch64-poky-linux- OECORE_TARGET_OS=linux CXX=aarch64-poky-linux-g++ -mcpu=cortex-a65 -march=armv8.2-a+crypto -mbranch-protection=standard -mabi=lp64 -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/opt/poky/4.0.23/sysroots/cortexa65-poky-linux CXXFLAGS= -O2 -pipe -g -feliminate-unused-debug-types OECORE_NATIVE_SYSROOT=/opt/poky/4.0.23/sysroots/x86_64-pokysdk-linux LDFLAGS=-Wl,-O1 -Wl,--hash-style=gnu -Wl,--as-needed -Wl,-z,relro,-z,now OECORE_TARGET_SYSROOT=/opt/poky/4.0.23/sysroots/cortexa65-poky-linux LD=aarch64-poky-linux-ld --sysroot=/opt/poky/4.0.23/sysroots/cortexa65-poky-linux OECORE_TARGET_ARCH=aarch64 PKG_CONFIG_SYSROOT_DIR=/opt/poky/4.0.23/sysroots/cortexa65-poky-linux CC=aarch64-poky-linux-gcc -mcpu=cortex-a65 -march=armv8.2-a+crypto -mbranch-protection=standard -mabi=lp64 -fstack-protector-strong -O2 -D_FORTIFY_SOURCE=2 -Wformat -Wformat-security -Werror=format-security --sysroot=/opt/poky/4.0.23/sysroots/cortexa65-poky-linux CROSS_COMPILE=aarch64-poky-linux-