4 ms·
For the uninitiated, these are libc libraries for embedded systems (alternatives to glibc). http://www.musl-libc.org/intro.html http://www.musl-libc.org/intro.
by tvon 11y ago
For the uninitiated, these are libc libraries for embedded systems (alternatives to glibc).
http://www.musl-libc.org/intro.html http://www.musl-libc.org/intro.html
http://www.uclibc.org/about.html http://www.uclibc.org/about.html
- throwaway2048 11y agoI wouldn't say that musl is particularly aimed at embedded stuff, simply that its small enough to fit most times. It is a full featured, fast C library.
- vezzy-fnord 11y agoIndeed, musl is more about correctness/standards compliance and robustness than targeting any specific platforms (provided it's Linux).
- justincormack 11y agoWell there are some non Linux ports too now - Midipix for Windows, and some bare metal implementations.
- edwintorok 11y agoIts also useful for creating statically linked executables, which is usually not possible with glibc if you use certain functions (getaddrinfo?).
- nadams 11y agoI always thought you could statically link glibc - but your executable will be huge as it needs to pull in the entire plus extras. Regardless - I'm glad I'm not the only one who is concerned about binary sizes.
- alanpost 11y agoIME you can statically link glibc, but your statically linked binary will still call ld.so.
- mcguire 11y agoThe NSS stuff? And something else? There's some specific things that are supposed to be modular library-wise.
- edwintorok 11y agoI think you usually get a warning at link-time if you try to statically link GCC and use a function that requires matching libc version at runtime, getaddrinfo was the one I remembered but there are certainly more functions like that: x.c:(.text+0x85): warning: Using 'getaddrinfo' in statically linked applications requires at runtime the shared libraries from the glibc version used for linking
- Alupis 11y ago> I wouldn't say that musl is particularly aimed at embedded stuff, simply that its small enough to fit most times. Maybe it's not particularly aimed at embedded stuff, but it sure does fit well. I've used it in 3 embedded projects recently, with great results. The only issue I've run into when trying to use musl is there are a lot of softwares out there that expect glibc, and refuse to run without (even though it probably would work). The Oracle JDK/JRE for ARM is an example, you must compile the OpenJDK from scratch to get it to use musl. Otherwise, it's a fantastic libc. It's fast to compile, it's tiny in size, and is feature-complete enough for most of my purposes.