Other Cross Compilers¶
This toolchain variant is borrowed from the Linux kernel build system’s
mechanism of using a
CROSS_COMPILE environment variable to set up a
GNU-based cross toolchain.
Examples of such “other cross compilers” are cross toolchains that your Linux distribution packaged, that you compiled on your own, or that you downloaded from the net. Unlike toolchains specifically listed in 3rd Party Toolchains, the Zephyr build system may not have been tested with them, and doesn’t officially support them. (Nonetheless, the toolchain set-up mechanism itself is supported.)
Follow these steps to use one of these toolchains.
Install a cross compiler suitable for your host and target systems.
For example, you might install the
gcc-arm-none-eabipackage on Debian-based Linux systems, or
arm-none-eabi-newlibon Fedora or Red Hat:
# On Debian or Ubuntu sudo apt-get install gcc-arm-none-eabi # On Fedora or Red Hat sudo dnf install arm-none-eabi-newlib
Configure the environment variables needed to inform the Zephyr build system to use this toolchain:
CROSS_COMPILEto the common path prefix which your toolchain’s binaries have, e.g. the path to the directory containing the compiler binaries plus the target triplet and trailing dash.
Continuing the above Debian or Ubuntu example:
export ZEPHYR_TOOLCHAIN_VARIANT=cross-compile export CROSS_COMPILE=/usr/bin/arm-none-eabi-
You can also set
CROSS_COMPILEas a CMake variable, or using the Kconfig symbol
When using this option, all of your toolchain binaries must reside in the same
directory and have a common file name prefix. The
is set to the directory concatenated with the file name prefix. In the Debian
example above, the
gcc-arm-none-eabi package installs binaries such as
arm-none-eabi-ld in directory
the common prefix is
/usr/bin/arm-none-eabi- (including the trailing dash,
-). If your toolchain is installed in
/opt/mytoolchain/bin with binary
names based on target triplet
CROSS_COMPILE would be