测试的系统环境是 Fedora 41
musl 是轻量级的 libc 实现,Docker 官方的容器使用的 Alpine 系统就是把 musl 作为它的默认 libc 库。
$ sudo dnf install musl-clang lld
musl 的头文件和库文件的路径是 /usr/{arch}-linux-musl
,使用命令 musl-clang
可以像 clang 一样直接编译 C 源码,它已经把 musl 需要的环境都包装好了:
$ musl-clang -fuse-ld=lld main.c
$ ldd a.out
linux-vdso.so.1 (0x0000ffff9ac36000)
ld-musl-aarch64.so.1 => /lib/ld-musl-aarch64.so.1 (0x0000ffff9aae0000)
使用 -static
可以编译完全无依赖的程序:
$ musl-clang -fuse-ld=lld -static main.c
$ ldd a.out
not a dynamic executable