musl은 glibc와 같은 C 표준 라이브러리로 가볍고 빠른 것이 특징이다.

musl 툴체인으로 빌드하려면 prebuilt 바이너리와 직접 빌드하는 방법이 있다.

여기서는 musl.cc에서 prebuilt 바이너리를 받아 컴파일 하는 방법을 설명한다.

빌드 방법

// hello_world.c
#include <stdio.h>

int main() {
	printf("Hello World\n");
	return 0;
}

x86-64 환경에서 네이티브로 빌드를 하려면 musl.cc 바이너리 에서

x86_64-linux-musl-native.tgz 를 다운받는다.

$ cd x86_64-linux-musl-native/bin
$ ./gcc hello_world.c

arm64 타겟의 크로스컴파일은 aarch64-linux-musl-cross.tgz를 다운로드 받아 실행한다.

$ cd aarch64-linux-musl-cross/bin
$ ./aarch64-linux-musl-gcc hello_world.c

Binary size

x86_64 시스템에서 hello_world.c 바이너리 크기를 비교해 보았다.

muslsizeglibcsize
musl+gcc7,528glibc+gcc15,960
musl+gcc (static)15,328glibc+gcc (static)900,304

정적으로 빌드 했을때 파일 용량 차이가 큰 것을 확인할 수 있다.
작은 바이너리가 필요할 때 유용하다.

Version

  • musl: git-b76f37f, gcc: 11.2.1
  • glibc: 2.35, gcc: 11.2.0