Musl
1. 개요
Musl은 POSIX 2008 및 C11 표준과 호환되는 C 표준 라이브러리이다. 리눅스, BSD, glibc 함수를 구현하며, 안정적인 ABI를 가진 단일 파일 동적 런타임과 정적 링킹을 지원한다. 유니코드 12.1.0을 지원하며, 메모리 할당 성능을 개선했다. musl은 정적 링킹, 경쟁 상태 회피 등을 통해 실시간 품질의 견고성을 갖도록 설계되었다. Alpine Linux, OpenWrt, Void Linux 등 여러 리눅스 배포판에서 표준 C 라이브러리로 사용되며, glibc 바이너리는 gcompat 등을 사용하여 musl 기반 배포판에서 실행할 수 있다.
이미지 준비중입니다.
| 이름 | musl |
|---|---|
| 개발자 | 리치 펠커 (dalias) 및 다른 개발자 |
| 배포일 | 2011년 2월 11일 |
| 최신 배포 버전 | 1.2.5 |
| 최신 배포일 | 2024년 3월 1일 |
| 운영체제 | 리눅스 2.6 이상 |
| 플랫폼 | x86 x86-64 ARM loongarch64 MIPS Microblaze PowerPC powerpc64 x32 RISC-V OpenRISC s390x SuperH |
| 장르 | C 표준 라이브러리 임베디드 리눅스 Linux for mobile devices |
| 라이선스 | MIT 라이선스 |
| 웹사이트 | musl.libc.org |
-
리눅스 커널 인터페이스 -
장치 파일
-
리눅스 커널 인터페이스 -
리눅스 기본 규격
리눅스 기본 규격(LSB)은 리눅스 배포판 간 호환성 증진을 목표로 하는 표준으로, 다양한 발전을 거쳤으나 비판과 제한적인 적용 사례가 있다. -
리눅스 API -
와인 (소프트웨어)
와인(Wine)은 유닉스 계열 운영체제에서 윈도우 응용 프로그램을 실행하기 위한 호환성 계층으로, 윈도우 API를 직접 구현하여 윈도우 프로그램이 리눅스, macOS 등에서 실행되도록 지원하며, 여러 기업의 후원을 받아 꾸준히 발전해왔다. -
리눅스 API -
OpenAL
OpenAL은 3차원 오디오를 위한 크로스 플랫폼 API로, 소스 객체, 오디오 버퍼, 리스너를 사용하여 3차원 공간에서 소리를 구현하며 다양한 운영 체제와 하드웨어를 지원한다. -
C 표준 라이브러리 -
파일 끝
파일 끝(EOF)은 데이터 소스에서 더 이상 읽을 데이터가 없음을 나타내는 조건이다. -
C 표준 라이브러리 -
C 자료형
C 자료형은 C 언어에서 데이터 형태를 정의하는 기본 요소로, 다양한 크기와 속성을 가진 산술, 부울 자료형과 구조체, 공용체 등을 제공하며, 컴파일러 및 시스템 아키텍처에 따라 크기와 동작 방식이 달라질 수 있다.
2. 특징
musl은 POSIX:2008 사양 및 C99를 준수하며, 널리 사용되는 대부분의 비표준 리눅스, BSD, glibc 함수도 구현되어 있다.
버전 1.2.0은 유니코드 12.1.0을 지원하며(glibc보다 더 적합하고 엄격함), 버전 1.2.1에서는 새로운 'mallocng' malloc 구현을 통해 메모리 할당 성능을 개선했다.
musl을 표준 C 라이브러리로 사용할 수 있는 리눅스 배포판에는 Alpine Linux, Dragora GNU/Linux-Libre, Gentoo Linux, Sabotage, Morpheus Linux 및 Void Linux영어 등이 있다. glibc에 링크된 바이너리의 경우, gcompat을 사용하면 musl 기반 배포판에서 실행할 수 있다.
2.1. 성능 및 안정성
musl은 효율적인 정적 링킹을 허용하고 경쟁 상태, 자원 고갈 시 내부 실패, 기존 구현체에서 보이는 그 밖의 다양한 좋지 않은 최악의 동작들을 회피함으로써 실시간 품질의 견고성을 보유하기 위해 처음부터 새로 설계되었다. 동적 런타임은 안정적인 ABI를 가진 단일 파일로, 경합 없는 업데이트를 허용하며, 정적 연결 지원을 통해 애플리케이션을 상당한 크기 오버헤드 없이 단일 휴대용 바이너리로 배포할 수 있다.