The bundled include/linux/types.h is a copy of the kernel UAPI header from v3.16. Since the build uses -I./include, it shadows the system . Recent kernel UAPI headers (v7.3) changed arm64's asm/sigcontext.h, included via , to use the __u128 type from linux/types.h: - __uint128_t vregs[32]; + __u128 vregs[32]; The stale copy lacks __u128, so the build fails on arm64: /usr/include/aarch64-linux-gnu/asm/sigcontext.h:81:9: error: unknown type name '__u128'; did you mean '__u32'? The system header provides everything the bundled copy did, so drop it. Link: https://bugs.launchpad.net/ubuntu/+source/ebtables/+bug/2169809