This is an old revision of the document!
Table of Contents
crossbuild-essential-armhf
crossbuild-essential-armhf is essentially a convenience/meta-package that installs the appropriate cross-compilation components.
What is installed
On Debian Bookworm, crossbuild-essential-armhf version 12.9 declares only these direct dependencies:
gcc-arm-linux-gnueabihf g++-arm-linux-gnueabihf dpkg-cross
The meta-package itself is tiny. Those direct dependencies pull in the actual compiler, linker, target C library, headers and C++ runtime. The significant transitive packages on a clean Bookworm installation include:
gcc-12-arm-linux-gnueabihf g++-12-arm-linux-gnueabihf cpp-arm-linux-gnueabihf cpp-12-arm-linux-gnueabihf binutils-arm-linux-gnueabihf libc6-armhf-cross libc6-dev-armhf-cross linux-libc-dev-armhf-cross libgcc-s1-armhf-cross libgcc-12-dev-armhf-cross libstdc++6-armhf-cross libstdc++-12-dev-armhf-cross libasan8-armhf-cross libatomic1-armhf-cross libgomp1-armhf-cross libubsan1-armhf-cross
dpkg-cross also brings in Debian packaging support, including dpkg-dev, Perl modules and libdebian-dpkgcross-perl. The exact complete transaction depends on which packages are already installed.
Importantly, crossbuild-essential-armhf does not install arbitrary target development libraries such as:
libssl-dev:armhf libcurl4-openssl-dev:armhf libasound2-dev:armhf
Those must be installed separately through Debian multiarch or supplied by a target sysroot. Adding armhf as a foreign architecture is required for installing :armhf multiarch packages, but it is not required merely to install the cross-toolchain packages listed above.
Check what would be installed
To see exactly what APT would add on a particular Debian system without installing anything:
sudo apt update sudo apt install --simulate crossbuild-essential-armhf
To inspect the direct dependencies or recursively list dependencies:
apt-cache depends crossbuild-essential-armhf
apt-cache depends \
--recurse \
--no-recommends \
--no-suggests \
crossbuild-essential-armhf
