2026-08-21
交叉编译 toybox:从 x86_64 静态 musl 到 ARM64 工具链的完整实战
本文是一次真实交叉编译记录:在 Debian 13(x86_64)上产出两个 toybox 0.8.14 的完全静态 musl 可执行文件——本地 x86_64 版(用 landley.net 现成 linux-musl 工具链,GCC 15.1.0)和 ARM64 版(用 musl-cross-make 从源码现编一条 aarch64 工具链,GCC 9.4.0 / binutils 2.44 / musl 1.2.6 / linux-headers 4.19.88)。重点复盘了本次实际踩到的坑:host glibc 与 musl 头文件打架、Debian musl-tools 不是完整工具链、国内下载 GNU 源码包(代理 502、清华 403、阿里云可用)、git.savannah 拉 config.sub 超时,以及最坑的一个——musl 自己 configure 里 arm* 通配符把 aarch64-linux-musl 误判成 32 位 ARM,最终靠改用 TARGET=aarch64-linux-musl 一次通过。每个工具链组件(gcc/binutils/musl/linux-headers/gmp/mpfr/mpc/sysroot)各干什么也逐一讲清,附完整可复现命令。