uClibc


uClibc — стандартная библиотека языка программирования C, предназначенная для встраиваемых систем на базе Linux. uClibc была разработана для поддержки uClinux (специальная редакция ядра Linux, способная работать без блока управления памятью [MMU]) и таким образом подходящая для микроконтроллеров). Буква u в названии есть адаптация греческой буквы µ, означающей «микро».

uClibc может запускаться как на системах с MMU так и без него[3]. Библиотека поддерживает процессоры i386, x86-64, ARM (big/little endian), AVR32, Blackfin[англ.], H8300, m68k, MIPS (big/little endian), PowerPC, SuperH (big/little endian), SPARC и V850[англ.].

Среди реализаций libc, uclibc-ng поддерживает наибольшее количество процессорных платформ[4]. Например, ведется работа по добавлению китайской c-sky[5] и nds32[6].

В 2014 году разработчики OpenWRT объявили о создании форка библиотеки, назвав его uClibc-ng[7][8][9]. Они решили запустить форк после того, как на протяжении более чем двух лет не могли связаться с мейнтейнером.[10][11][12]. По состоянию на 2017 год этот форк продолжает выпускать релизы, используется в Buildroot[англ.][13], OpenADK, OpenWrt/Lede для архитектуры ARC, в системах NDS32, Xtensa, Blackfin. Ранее использовавший uclibc мини-дистрибутив Alpine Linux и OpenWrt/Lede переключились на musl; OpenEmbedded вместо uclibc позволяет использовать glibc или musl[4].

Между версиями нарушалась двоичная совместимость. Начиная с 1.0.18 версии все библиотеки были объединены в одну по аналогии с musl[4].

Библиотека не реализует некоторых разделов стандартных UNIX libc, в частности функциональность libnsl и NSS. Также не поддерживает версионирование символов[4]