I've spent hours, if not days figuring out how to cross compile Linux for AArch64.

I'm using Ubuntu in a VM to do this, however all guides I managed to find didn't work completely. Most of them assumed the end-user had Debian, and things are named differently there. Once I was able to get a configuration profile to be made, but I couldn't get it to be used. when I typed in make, I got a questionnaire for x86-based systems, despite I've saved the config file with menuconfig. Then I specified the ARCH and CROSS_COMPILE parameters, then I get yet another questionnaire, with skipping a lot of things that would've been essential for my build target.

Then my Ubuntu VM needed to be reinstalled, so I'm back at almost square zero, with no idea what I needed to install to get the cross-compilation to work, or how I did specify the CROSS_COMPILE parameter. I've installed the compiler (took hours to figure out how it's called under Ubuntu), but it has a different name when needed to be specified for cross-compilation. Maybe I've skipped something.

Yes, I've googled it multiple times, and most guides assumed the user knew a lot of quite obscure stuff. Many of them were even more than a decade old.


To cross-compile a kernel for AArch64 on Ubuntu, you need to install gcc-aarch64-linux-gnu, and run the build as

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- ...


make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- menuconfig

to configure, and

make ARCH=arm64 CROSS_COMPILE=aarch64-linux-gnu- all

to build the kernel and modules.

If you can’t find an option you’re expecting, use / in menuconfig to look for it; that will tell you what else needs to be enabled.

(These are the same instructions as for Debian; the core cross-compiler packages are named the same in Debian and Ubuntu nowadays.)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.