This week the CLFS embedded book switched from uClibc to musl for its C library.

Some people really like musl as it’s license is MIT rather than GPL. I think that’s nice and all, but license compliance if you’re using Linux already isn’t that big of a deal. You’re already jumping through hoops, adding one more package that probably won’t be customized in use is almost 0 additional work.

The real reason for the switch is I hate manually configuring things. uClibc is great, so long as you don’t mind wading through a huge configuration. The defconfig isn’t sane for most architectures I care about. musl doesn’t have any configuration, unless you really really want to. This is very important to me as trying to explain how to create a sane uClibc configuration for more than one architecture, or trying to make a bunch of patches supplying uClibc configurations, is quite painful.

musl requires an MMU. uClibc doesn’t. For my own sanity, this is generally a good thing.

As another related note, I’ve also made a bunch of other updates to the embedded CLFS book recently and it’s getting closer to a set of exact steps that actually works! The next big change will be cleaning up the kernel and bootloader instructions.


18 October 2013