Fact-checked by Grok 2 weeks ago

uClibc

uClibc (pronounced "you-see-lib-see") is a compact designed for systems, providing a lightweight alternative to the GNU C Library () while supporting nearly all glibc-compatible applications through recompilation. Developed initially by Erik Andersen in 2000, it targets resource-constrained environments such as mobile devices and hardware, emphasizing minimal size—typically around 330–560 KB depending on configuration—without sacrificing essential functionality like shared libraries and threading. The project's goal, as stated by its founder, is "to be the smallest fully functional C library for ," incorporating code from and other sources while prioritizing compliance (including 1003.1 standards from 2004, 2008, and later) and System V ABI specifications. It supports both standard Linux kernels and MMU-less (uClinux) systems, running on a broad array of architectures including , , PowerPC, x86, and over 25 others like , Blackfin, and . Original development under Erik Andersen transitioned to maintainer Bernhard Reutner-Fischer in 2008, culminating in the final release (version 0.9.33.2) in May 2012, after which activity stalled. In response, uClibc-ng emerged as a community fork in July 2014 by Waldemar Brodkorb, with its first stable release (1.0.0) in February 2015; this active continuation focuses on stability, testing, and modern features like and locale support. uClibc and its ng variant remain integral to embedded toolchains, serving as defaults in (except for certain 64-bit architectures) and select configurations of , OpenADK, and Gentoo variants, particularly for no-MMU hardware or architectures lacking alternatives like . As of 2025, uClibc-ng's latest release is version 1.0.55, ensuring ongoing relevance in size-sensitive deployments despite competition from newer libraries.

Overview

Purpose and Design

uClibc serves as a compact implementation of the C standard library for userspace applications in embedded Linux systems, specifically targeting environments with constrained RAM and storage resources. Developed to enable efficient operation on resource-limited hardware, it provides essential POSIX and C library functionality while maintaining compatibility with most applications that compile against the GNU C Library (glibc), often requiring only recompilation. The core design goals of uClibc emphasize drastic reduction in size and avoidance of unnecessary bloat, resulting in a typical complete shared object set of around 560 KB—significantly smaller than 's approximately 7.9 MB. This minimization is achieved through selective feature inclusion, prioritizing essential components for use while excluding or simplifying non-critical elements to enhance efficiency in memory and storage usage. Unlike more comprehensive libraries like , uClibc focuses on delivering a lightweight alternative that supports rapid development and deployment in space-constrained systems. The naming of uClibc derives historically from its origins in supporting µClinux, a of designed for microcontrollers lacking a (MMU), though it has evolved to fully accommodate standard kernels with MMU support. A key principle in its architecture is modular compilation, which permits developers to customize the library by disabling unused features—such as full support or —to further tailor it to specific hardware constraints and application needs. This configurability ensures that uClibc remains adaptable without compromising its role as a fully functional C library for environments.

Relation to uClinux

uClinux represents a port of the Linux kernel tailored for microcontrollers lacking a memory management unit (MMU), enabling embedded systems to run on resource-constrained hardware such as the Motorola DragonBall and ColdFire processors. These early architectures, including the 32 MHz DragonBall used in devices like the uCDIMM module, benefited from uClinux's flat memory model, which avoids virtual memory overhead and supports position-independent code (PIC) to handle fixed physical address mappings. Initial releases, such as uClinux 2.4 in January 2001, explicitly added support for these processors, facilitating low-cost embedded applications without the need for more expensive MMU-equipped chips. uClibc was specifically developed as a compact C library to complement uClinux, providing essential system call wrappers and UNIX-like APIs compatible with the MMU-less kernel. Its origins trace back to addressing the unique constraints of uClinux environments, where traditional glibc features like full virtual memory support were impractical due to the absence of an MMU. Key adaptations include replacing the standard fork() system call—which relies on copy-on-write and separate address spaces—with vfork(), allowing child processes to share the parent's memory space until an execve() or exit() occurs, thus simulating process creation without hardware isolation. This approach maintains multi-process scheduling while operating in a shared physical address space model, akin to single-user mode simulations where processes contend for a unified memory pool rather than isolated virtual environments. In terms of memory management, uClibc incorporates custom mechanisms for MMU-less systems, favoring mmap() and munmap() to allocate from a global system pool over traditional brk() or sbrk() calls, which cannot dynamically expand process boundaries without an MMU. This results in higher per-allocation overhead (approximately 56 bytes) but ensures compatibility by treating memory as a contiguous, non-swappable resource shared across kernel and user space. Variants like the simple malloc implementation in uClibc further optimize for no-MMU by using page-aligned allocations to reduce fragmentation, though they limit large contiguous blocks. Over time, uClibc evolved beyond its initial MMU-less focus to include full MMU support, allowing it to serve both uClinux and standard systems interchangeably through configurable builds. This versatility expanded its applicability to a broader range of platforms, while retaining with no-MMU adaptations for legacy uClinux deployments.

History

Initial Development

Development of uClibc began in 2000, led by Erik Andersen, who aimed to create a compact C library tailored for environments, especially to enable support for uClinux on processors without a (MMU). At the time, Andersen was working at Lineo, Inc., and recognized the need for a lightweight alternative to the (glibc), which was ill-suited for resource-limited devices due to its large size and lack of MMU-less compatibility. This initiative addressed a critical gap in the embedded Linux ecosystem, where no adequately small and functional C library existed for such constrained systems. uClibc was primarily written from scratch by Andersen to achieve its size optimizations, though it selectively incorporated code from and other sources to maintain compliance and ease porting of applications. Key early contributions came from the broader Linux community, including developers active on mailing lists dedicated to uClinux and projects. By late 2000, Manuel Novoa III of CodePoet Consulting joined as a major contributor, enhancing features like the GCC wrapper and support, which bolstered the library's usability in minimal systems. Early milestones included the first public announcements and versions in 2000, with Andersen unveiling the project on the uClibc in June, emphasizing its goal as "the smallest fully functional library for ." Integration with , another Andersen-led project for creating minimal userland tools, quickly followed, allowing uClibc to form the basis of complete, space-efficient root filesystems for devices. Development remained closely aligned with uClinux objectives, focusing on no-MMU architectures like those in early microcontrollers. Early releases beginning in 2000 established the library's core with basic functionality tailored for resource-constrained environments, including initial support for shared libraries to enable dynamic linking.

Major Releases and Milestones

uClibc's development progressed through several key releases that introduced essential features for systems. In , version 0.9.28 marked a significant advancement, incorporating upgrades across multiple architectures such as , PowerPC, , and the addition of support, alongside fixes for , 68k, , Alpha, , and SH64. This release enhanced dynamic linking capabilities in libdl and ldso, including support for circular dependencies and execution of ldso similar to , while improving threading implementation with fixes for and better parallel build support. It also added full ANSI/ISO locale support and networking features, expanding compatibility for internationalized applications and modern network protocols. New system calls like clock_getres, clock_settime, and support for CLOCK_MONOTONIC were introduced, alongside security enhancements for suid applications during dynamic linking. Version 0.9.30, released in late 2008, further refined configurability and platform support, with extensive fixes for architectures including improved ARM handling and additions for AVR32 and Xtensa. Key security improvements included better handling of non-MMU environments through stubs for functions like fork() and a 30% reduction in the size of the allnoconfig shared library. This version introduced toggles for network support (including IPv4 and IPv6 sub-options), epoll for efficient I/O event notification, extended attributes (xattr), and realtime features such as aio_, sched_, and timer_* functions via new configuration options like UCLIBC_HAS_REALTIME and UCLIBC_HAS_EPOLL. The final update in this series, 0.9.30.3, arrived in March 2010 as a maintenance release focusing on stability. A notable milestone around 2005 was the adoption of a KConfig-based system for , allowing users to interactively configure the library via a kernel-like interface, which was later updated to align with 2.6.11 in subsequent releases. Another important development was the integration with , initiated in 2001 as a dedicated for building uClibc-based toolchains and root filesystems, simplifying cross-compilation for embedded targets. Post-2012 activity remained limited to bug fixes, exemplified by the 0.9.32.1 release in December 2011, which addressed critical issues without introducing major features.

Transition to uClibc-ng

The original uClibc project experienced significant stagnation following its last major release, version 0.9.33.2, in May 2012, with no subsequent updates due to shifting priorities of the lead developer and maintainer, Bernhard Reutner-Fischer. By 2014, the official uClibc website explicitly noted that releases were on hold, reflecting a lack of responsiveness to community patches, bug reports, and requests for maintainership handover. In response to this inactivity, which had persisted for over two years without communication on future plans, the community initiated the uClibc-ng . The project was announced in July 2014 by Brodkorb on the and development mailing lists, with contributions from other community members such as Bartosz Golaszewski, who later provided key patches for features like syncfs and fanotify support. The fork aimed to revive maintenance of the codebase based on uClibc 0.9.33.2, addressing accumulated issues and enabling ongoing development for systems. The first stable release of uClibc-ng, version 1.0.0 (codenamed Leffe Blonde), arrived in February 2015, marking the project's after preparation during the conference. Subsequent releases have focused on stability, incorporating bug fixes for existing features, such as improvements to DNS resolution and threading, alongside support for new processor architectures including (both 32-bit and 64-bit), C-Sky, and enhanced compatibility for and NIOS2. The latest version, 1.0.55 (codenamed Naturradler), was released on September 19, 2025, emphasizing reliability for resource-constrained environments. uClibc-ng operates under a community-driven development model, utilizing a repository for and hosting discussions on a dedicated ([email protected]) and IRC channel (#uclibc-ng on OFTC). It has been adopted in projects like FreeWRT 2.0, a meta-distribution for vintage WLAN routers that leverages the latest uClibc-ng for its compact footprint. Meanwhile, the original uClibc project's website now directs users to uClibc-ng for updates and ongoing support.

Technical Features

Size Optimization and Configurability

uClibc employs the kernel's KConfig system for build-time customization, allowing developers to enable or disable specific features through interfaces like , thereby tailoring the library to the target application's needs and minimizing unnecessary code. Key configurable options include (RPC) support via UCLIBC_HAS_RPC, wide character support via UCLIBC_HAS_WCHAR (which significantly increases library size when enabled), and floating-point mathematics through related flags like UCLIBC_HAS_FLOATS and UCLIBC_HAS_HEXADECIMAL_FLOATS. Other toggles, such as networking (UCLIBC_HAS_NETWORK_SUPPORT), locale support (UCLIBC_HAS_LOCALE, adding approximately 300 KB), and regular expressions (UCLIBC_HAS_REGEX, adding about 53 KB), further enable precise control over the library's footprint. The resulting core library size typically ranges from 200 to 600 , depending on the selected configuration; for instance, uClibc-ng 1.0.14 totals around 716 , with the main libuClibc component at 282 . In contrast to glibc's baseline of 2-5 MB, this compactness is evident in totals of about 608 across components. For minimal applications, static linking can shrink the effective size to under 100 by embedding only required functions, avoiding overhead. Optimization techniques in uClibc include the use of inline functions to reduce call overhead, minimized symbol tables to cut binary bloat, and omission of extraneous ABI compatibility features to maintain a lean implementation. It supports both static and dynamic linking, with options like DOSTRIP to unnecessary symbols from binaries, further reducing . The dynamic loader (ld-uClibc.so) can be configured to be smaller by avoiding memory waste from poorly coded shared libraries, contributing to overall efficiency. These design choices yield performance benefits, including faster startup times and lower memory usage in environments, as the reduced code size accelerates loading and execution without the heavier preloading mechanisms found in fuller libraries.

Standards and API Compliance

uClibc provides full compliance with the standard (C89), serving as its foundational implementation for environments. It targets ISO C99 compliance, with core features such as variable-length arrays, inline functions, and designated initializers supported, though certain elements like support were initially omitted and added in later releases. For instance, C99 math functions (e.g., fmax, fmin) are included but configurable as optional to minimize footprint. In uClibc-ng, the successor project, C11 support is explicitly incorporated, enabling features like atomic operations and while maintaining backward compatibility with prior standards. Regarding POSIX compliance, implements a of , covering essential system calls (e.g., open, read, write), signal handling (e.g., sigaction, kill), and basic process management to ensure portability in resource-constrained systems. Early versions relied on LinuxThreads for (), providing basic synchronization primitives but lacking scalability; however, starting with release 0.9.32, Native POSIX Thread Library (NPTL) support was added for major architectures like and x86, achieving near-complete compliance with features such as futex-based locking and asynchronous cancellation. uClibc-ng extends this with NPTL across 10 of its 28 supported architectures, enhancing performance for multi-threaded applications while omitting advanced extensions like message queues and to preserve size. The library supports key APIs including standard I/O (stdio.h with functions like printf, fopen), mathematics (libm with trigonometric and floating-point operations), and networking via BSD sockets (e.g., socket, bind, connect for IPv4/IPv6). Embedded-specific extensions handle no-MMU environments through uClinux-compatible process management, allowing flat binary execution without virtual memory. Limitations include optional full internationalization support; while basic locales and iconv for character encoding conversion (primarily UTF-8) are available, comprehensive locale handling (e.g., no POSIX localedef tool) can be disabled to reduce binary size by up to 200 kB. uClibc-ng improves on this with enhanced Unicode locale support and integrated cryptographic APIs (e.g., libcrypt for password hashing), configurable without increasing the default 560 kB footprint significantly.

Supported Platforms

Processor Architectures

uClibc provides robust support for a range of processor architectures, with a strong emphasis on those commonly used in embedded systems. Primary architectures include (encompassing ARMv7 and variants), (both 32-bit and 64-bit), x86 (i386 and x86_64), PowerPC, and (32-bit and 64-bit). These platforms benefit from mature implementations, enabling efficient operation in resource-constrained environments. For embedded-specific architectures, uClibc targets processors like , , , and Xtensa, which are prevalent in FPGA-based and custom designs. Historical support extends to MMU-less configurations for architectures such as ColdFire (a variant of M68K) and , facilitating deployment on no-MMU Linux systems like uClinux. The uClibc-ng fork has expanded architecture coverage, adding support for , C-Sky, KVX, and NDS32 to address niche embedded markets. Experimental ports are available for Alpha, , and SPARC64, though these require further testing for production use. As of release 1.0.55, uClibc-ng supports over 30 architectures in total, including , CRIS, FR-V, H8/300, LM32, Metag, , , and others. Porting considerations in uClibc include handling both big-endian and little-endian byte orders across architectures, with bi-endianness explicitly supported on . ABI variations are accommodated, such as the EABI for (while legacy OABI is not supported), ensuring compatibility with diverse configurations.

Kernel and System Compatibility

uClibc provides robust compatibility with kernels starting from version 2.4 and later for systems equipped with a (MMU), enabling deployment on standard embedded environments. For no-MMU configurations, it supports uClinux variants based on kernel 2.6, which facilitate operation on processors lacking hardware. The ongoing development branch, uClibc-ng, extends this support to contemporary kernels, including versions up to 6.12 as demonstrated in distributions like Bering-uClibc 7.5.0-beta1 released in 2025. Designed for resource-constrained devices, uClibc targets minimalist system setups that operate with less than 8 MB of RAM, making it suitable for deeply embedded applications where memory efficiency is paramount. It integrates seamlessly with lightweight initialization systems, such as the init, which provides essential boot and process management functionality without the overhead of full-featured alternatives like . uClibc is commonly integrated into embedded Linux distributions, including (which historically utilized uClibc-ng in releases like 18.06) and its predecessor LEDE, as well as custom root filesystems built with tools like . Due to its emphasis on minimal footprint, it does not support full desktop-oriented distributions, which typically require larger libraries like for broader application compatibility. Maintaining compatibility across diverse kernel versions presents challenges, particularly with evolving Application Binary Interfaces (ABIs). uClibc addresses this through syscall wrappers that abstract kernel-specific interfaces, ensuring portable behavior for common operations.

Comparisons with Alternatives

Versus glibc

uClibc offers a significantly smaller footprint compared to the GNU C Library (), primarily due to its modular design that allows disabling unnecessary features at , resulting in significantly smaller binaries in scenarios. For instance, the complete shared object set for uClibc measures around 560 KB, while 's exceeds 7.9 MB, largely because includes comprehensive support for features like Name Service Switch (NSS) modules and extensive data. In terms of features, uClibc intentionally omits several extensions to prioritize size over completeness, such as Linux-specific NSS support and the nsswitch.conf , limiting and group to flat or shadow password files without dynamic modules. It also lacks a full database (libdb), provides stub implementations for libresolv and libnsl with minimal or no (NIS) support, and offers incomplete locale handling and long double mathematics. Applications built against typically require recompilation to link with uClibc, as there is no binary compatibility between the two libraries or even across uClibc versions. Performance differences vary by workload; uClibc's optimizations for size can lead to trade-offs, such as slower standard I/O operations due to stricter formatting and lack of automatic tuning, but it performs comparably or better in allocation tasks on resource-limited hardware. In benchmarks, uClibc demonstrates lower overhead in scenarios like operations and allocations, with examples showing strlen completing in 0.098 seconds versus 's 0.048 seconds, though excels in complex substring searches (strstr: 1.273 seconds for uClibc vs. 0.088 seconds for ). For intricate applications requiring full support, provides superior efficiency. uClibc is tailored for resource-constrained environments like devices and routers, where minimal size and configurability are critical, whereas suits desktops and servers demanding robust feature sets and standards compliance. Most applications port to uClibc with minimal modifications, often just recompilation, enabling straightforward adoption in projects.

Versus musl

uClibc and represent two distinct approaches to implementing a lightweight for Linux-based systems, particularly in embedded environments. uClibc emphasizes configurability, allowing developers to selectively enable or disable features to minimize footprint and tailor the library to specific hardware constraints. In contrast, adopts a philosophy of simplicity and strict adherence to standards like and , without configuration options, to ensure a clean, minimal implementation that prioritizes correctness and ease of use. uClibc, initiated in 1999, predates (first released in 2011) and historically offered broader support, with compatibility for up to 28 processor architectures as of 2017, compared to musl's 12 at the time. This maturity made uClibc a staple for embedded systems requiring support for older or niche hardware. As of 2025, uClibc-ng continues broad support with over 25 architectures (including experimental ones like Alpha and HPPA), while supports 16 architectures. , however, is lighter by default, with a static size of approximately 426 KB, versus uClibc's 500 KB, and incorporates no , enhancing through a smaller and avoidance of outdated features. Trade-offs between the two highlight their suitability for different use cases: uClibc's selective feature implementation excels in space-constrained legacy projects, where disabling unused components like full support can significantly reduce size. , with its cleaner codebase and superior static linking capabilities, is often preferred for new developments, offering better portability and reduced dependency issues in modern or containerized environments. In benchmarks, uClibc and exhibit similar overall sizes, but typically outperforms in areas like string operations (e.g., strstr execution in 0.057 seconds versus uClibc's 1.273 seconds) and is fully compliant with math functions, enabling more efficient mathematical computations.

Adoption and Community

Usage in Embedded Systems

uClibc finds primary application in resource-constrained embedded systems, including routers powered by , (IoT) devices, and industrial controllers, where its compact footprint allows deployment on hardware limited to 4-16 MB of and . In router firmware like , uClibc supports lightweight networking stacks for wireless access points and gateways, facilitating efficient packet processing in low-memory environments. For endpoints, it underpins sensor nodes and connected appliances by minimizing binary sizes, which is critical for battery-operated or intermittently powered setups. Industrial controllers leverage uClibc for monitoring and control tasks in equipment, where size optimization ensures reliable operation without excessive resource demands. Early adoption of uClibc occurred in uClinux-based personal digital assistants (PDAs), such as ARM-powered handhelds, where it enabled Linux functionality on memory management unit (MMU)-less processors for tasks like basic connectivity and user interfaces. Practical benefits of uClibc in embedded systems include reduced boot times, achieved through its minimalistic design that accelerates kernel initialization and application loading. It also contributes to lower power consumption by reducing memory footprint and CPU cycles for library operations, which is particularly advantageous in solar-powered or low-energy IoT nodes. A representative example is Bering-uClibc, a distribution tailored for network appliances like firewalls and VPN routers, where uClibc enables compact images that boot rapidly and operate efficiently on legacy hardware. Despite these advantages, developers face challenges such as mismatches between and environments, which can lead to subtle runtime errors in . Cross-compilation toolchains for uClibc often require careful handling of scripts and library dependencies to avoid build failures, necessitating specialized setups like those provided by .

Integration with Tools like Buildroot and BusyBox

Buildroot, initiated in December 2001 by the developers of uClibc, was originally designed as a testbed for building compact embedded Linux systems to evaluate uClibc's performance and compatibility. As a build system, it automates the generation of cross-compilation toolchains, kernels, and root filesystems, with uClibc (and its fork uClibc-ng) serving as a selectable C library option during configuration. This integration allows users to produce lightweight systems by enabling uClibc-specific features, such as stripped-down locale support and dynamic linking optimizations, directly through Buildroot's menuconfig interface. BusyBox, which began development in 1996 under Bruce Perens and was later maintained by Erik Andersen starting in 1999, predates uClibc's initial release in February 2000 by several years, yet the two projects share a close developmental timeline through Andersen's involvement in both. In embedded environments, uClibc provides the essential runtime library for BusyBox's multi-applet executable, enabling the creation of minimal root filesystems where BusyBox handles core utilities like shell, file management, and networking. This synergy is evident in static builds, where a full BusyBox binary compiled against uClibc occupies approximately 700 KB, significantly smaller than glibc-linked equivalents at around 1.8 MB, facilitating resource-constrained deployments. Additional tools enhance uClibc's integration into embedded workflows. Crosstool-NG, a configurable builder, explicitly supports uClibc for generating cross-compilers, recommending versions 4.8 or 4.9 to avoid compatibility issues in uClibc-based builds. Similarly, uClibc-ng is accommodated in and through dedicated layer recipes, such as those in meta-oe, which provide build instructions for incorporating it as an alternative C library in custom distributions. In practice, integrating uClibc involves selecting a defconfig file in to preset configurations, followed by running [make menuconfig](/page/Menuconfig) to fine-tune options like enabling shared libraries or specific threading models. This process integrates uClibc into build scripts, automating compilation and packaging; for instance, a basic configuration with and uClibc can yield root filesystem images around 2 MB in size, suitable for flash-constrained devices.

References

  1. [1]
    Welcome to uClibc-ng! - Embedded C library
    uClibc-ng is a small C library for developing embedded Linux systems. It is much smaller than the GNU C Library, but nearly all applications supported by glibc ...
  2. [2]
    None
    ### Summary of uClibc from ELCE 2017 Presentation
  3. [3]
    Specifications - uClibc
    uClibc aims to be compliant with POSIX standards, including POSIX 1003.1 2024, 2008, and 2004, and SystemV ABI specifications.
  4. [4]
    readme - The Linux Kernel Archives
    uClibc even supports shared libraries and threading. It currently runs on standard Linux and MMU-less (also known as µClinux) systems with support for alpha, ...Missing: key | Show results with:key
  5. [5]
    Comparison of C/POSIX standard library implementations for Linux
    The size totals for glibc include the size of iconv modules, roughly 5M, in the “Complete .so set” figure. These are essential to providing certain ...Missing: binary | Show results with:binary
  6. [6]
    uClibc
    What is the history of uClibc? Where did it come from? uClibc started off as a fork on the Linux-8086 C library, which is part of the elks project.
  7. [7]
    How uClinux provides MMU-less processors with an alternative
    The C library used in uClinux, uClibc, is a smaller implementation than those which ship with most modern Linux distributions. The library has been designed to ...
  8. [8]
    [PDF] Introduction to uClinux: low cost embedded-device development ...
    Jul 28, 2005 · Why use uClinux ? • scheduler (single user/multiple processes). • memory management (malloc) ⇒ limited contiguous memory allocation can be ...
  9. [9]
    Why is Malloc Different Under uClinux? - LinuxDevices
    May 30, 2002 · Since sbrk/brk cannot increase a processes size under uClinux, malloc needs to undergo some changes at least at the low level in order to work.
  10. [10]
    [PDF] uClinux ELC.pptx - Linux Foundation Events
    'uClinux' refers to any system using the Linux Kernel and uClibc. uClibc can be built with or without support for an MMU. Whereas a glibc/Linux.
  11. [11]
    [PDF] The Role of C Libraries in a Modern Buildsystem
    uClibc-ng is a small C library for developing embedded Linux systems. It is much smaller than the GNU C Library, but nearly all applications supported by glibc ...
  12. [12]
    History of Firmware Linux - Rob Landley
    Both BusyBox and uClibc were maintained by a guy named Erik Andersen, who had started them while working for a company called Lineo and continued them after ...
  13. [13]
    [uClibc]newlib and uclibc ?
    ### Summary of uClibc Announcement by Erik Andersen
  14. [14]
    [BusyBox] BusyBox now compiles and runs with uC-Libc - [uClibc]Re
    Dec 29, 2015 · [uClibc]Re: [BusyBox] BusyBox now compiles and runs with uC-Libc. Glenn McGrath bug1 at optushome.com.au. Tue Oct 31 01:52:12 UTC 2000.Putting uclibc in a linux distribution?[uClibc]Patch to add libc/inet/ether_addr.cMore results from lists.uclibc.org
  15. [15]
    Index of /pub/linux/libs/uclibc/old-releases/ - The Linux Kernel Archives
    Index of /pub/linux/libs/uclibc/old-releases/ ../ sha256sums.asc 25-Apr-2023 21:27 5601 uClibc-0.9.08.tar.bz2 22-Dec-2001 15:59 983K uClibc-0.9.08.tar.bz2.Missing: 0.9.0 | Show results with:0.9.0
  16. [16]
    A changelog for uClibc 0.9.27->0.9.28.
    Jul 27, 2006 · Important changes include: Lots of architecture upgrades. Fixes and upgrades for arm, PPC, mips, CRIS, Blackfin, 68k, sparc, alpha, sh, and sh64 ...
  17. [17]
    Changelog - The Linux Kernel Archives
    ... Manuel Novoa III o gcc wrapper reworked by Erik Andersen. Now operated correctly in all known cases, and now wraps g++ as well for C++ support. o ...Missing: contributors | Show results with:contributors
  18. [18]
    uClibc 0.9.30 is available - Bootlin
    Nov 27, 2008 · uClibc 0.9.30 is available · a lot of fixes for the various architectures, and other tweaks and improvements · an improved configurability that ...Missing: notes | Show results with:notes<|separator|>
  19. [19]
    Index of /downloads - uClibc
    Index of /downloads ; Description ; Parent Directory - ; ChangeLog-0.9.30.1_0..> 2010-01-13 20:33 70K ; ChangeLog-0.9.30.2_0..> 2010-03-12 20:21 8.5K ; ChangeLog-0.9 ...Missing: notes | Show results with:notes
  20. [20]
    Roll Your Own Embedded Linux System with Buildroot
    Aug 31, 2011 · uClibc development continued separately, and the parent uClinux Project somewhat lost its momentum. From the Buildroot Web site: “Buildroot is a ...
  21. [21]
    uClibc
    0.9.32.1 is a bug fix release and a recommended update. Head to the downloads page to pick up the 0.9.32.1 release.DownloadFAQToolchainsAboutSpecifications
  22. [22]
    [oe] [OpenWrt-Devel] uClibc-ng - OpenEmbedded
    [oe] [OpenWrt-Devel] uClibc-ng. Waldemar Brodkorb wbx at uclibc-ng.org. Mon Jul 21 19:23:49 UTC 2014 ... mailing list.
  23. [23]
    Index of /releases - uClibc-ng!
    Index of /releases ; [DIR], 1.0.0/, 2015-04-16 21:30 ; [DIR], 1.0.1/, 2015-04-16 21:21 ; [DIR], 1.0.2/, 2015-04-16 21:23 ...Missing: February | Show results with:February
  24. [24]
    FreeWRT
    FreeWRT is a meta GNU/Linux distribution for vintage WLAN router. In this context "meta" means, you can build the complete distribution from source. FreeWRT is ...
  25. [25]
    Documentation - Embedded C library - uClibc-ng!
    Feb 11, 2017 · This will install the uClibc-ng runtime and development system (i.e. ... Use Buildroot from http://www.buildroot.org; Use OpenWrt from ...
  26. [26]
    extra/Configs/Config.in - Uclibc-ng source code v1.0.8 - Elixir Bootlin
    config UCLIBC_STRICT_HEADERS bool "Hide structures and constants for unsupported features ... locale data, enable this option. Otherwise you will need to obtain ...
  27. [27]
    The Buildroot user manual - uClibc
    In the Target packages menu, disable BusyBox; In the Filesystem images menu, disable tar the root filesystem. Then, we can trigger the build, and also ...
  28. [28]
    C Library · EmbeddedSystem
    This applies to all applications used in embedded systems. ▷ Size (arm): 3.5 times smaller than glibc! uClibc-ng 1.0.14: approx. 716kB (libuClibc: 282kB, libm: ...
  29. [29]
    [uClibc] size difference between uclibc and glibc
    Jul 24, 2003 · ... libraries on MIPS total up to about 10.9 MB. (Add another 9 MB for locale support.) uClibc's shared libraries add up to a whopping 608 KB ...
  30. [30]
    A short file size comparison of small libc implementations for Linux
    Jan 5, 2014 · This blog post gives a short executable file size comparison when the same statically linked, i386 ELF executable was compiled with various ...Missing: binary glibc<|separator|>
  31. [31]
    Optimize Options (Using the GNU Compiler Collection (GCC))
    Turning on optimization flags makes the compiler attempt to improve the performance and/or code size at the expense of compilation time and possibly the ...Missing: uClibc | Show results with:uClibc
  32. [32]
    [PDF] Optimize Embedded Linux Boot Time Performance - HCLTech
    Reducing Application Size and RAM Usage ... Using a light C library – Use uClibc instead of glibc. uClibc exists in embedded Linux systems. 3. “strip ...
  33. [33]
    ARCH and UCLIBC ? - Raspberry Pi Forums
    I guess uclibc based distributions are faster because smaller binarys are faster to read from both hard disc and memory. I guess that the difference in speed ...
  34. [34]
    [PDF] uClibc today: Still makes sense - Linux Foundation Events
    Busybox was started before uClibc. • Buildroot was initially created as a testbed for uClibc. • Buildroot & Busybox are much more popular than uClibc today.
  35. [35]
    uClibc 0.9.32 released, with NPTL support - Bootlin
    Jul 1, 2011 · The 0.9.32 release brings one major new feature : the support of the Native Posix Threads Library for the most common architectures.Missing: ng | Show results with:ng
  36. [36]
    [PDF] Native POSIX Threads Library (NPTL) Support for uClibc.
    Jul 19, 2006 · This paper will present the design and implementation of NPTL support in uClibc. In addition to the design overview, benchmarks, limitations ...
  37. [37]
    uClibc-ng is a small C library for developing embedded Linux systems.
    uClibc-ng is a small C library for developing embedded Linux systems. License. LGPL-2.1 license · 7 stars 1 fork Branches Tags Activity · Star · Notifications ...
  38. [38]
    ARM - Advanced RISC Machine - Embedded C library - uClibc-ng!
    uClibc-ng has very good support for ARM architecture. It support shared libraries, NTPL and Linuxthreads. ARM is 32 Bit with bi-endianness support.Missing: processor | Show results with:processor
  39. [39]
    install - uClibc
    Linux kernel version 2.0, version 2.2, version 2.4 and version 2.6 are known to work. Other kernel versions may work but haven't been tested.Missing: compatibility | Show results with:compatibility
  40. [40]
    LEAF Linux Embedded Appliance Framework Files - SourceForge
    Bering-uClibc-7.5.0-beta1 provides a Linux kernel update to latest LTS kernel 6.12(.8), uClibc-ng updated to 1.0.51, and busybox to 1.37.0.
  41. [41]
    [PDF] Embedded Linux in less than 4 MB of RAM - Bootlin
    How small can a normal Linux system be? ▷ RAM. ▷ You need 2-6 MB of RAM for an embedded kernel. ▷ Need at least 8 ...<|control11|><|separator|>
  42. [42]
    Reunited with LEDE, OpenWrt releases stable 18.06 version
    Aug 1, 2018 · OpenWrt 18.06 advances to Linux Kernel 4.9.111 for some targets and 4.14.5 for others. Toolchain updates include musl libc 1.1.19, uClibc-ng 1.0 ...
  43. [43]
    Bootlin toolchains 2024.05 released
    Aug 18, 2024 · 5, uClibc-ng 1.0.50, Linux headers 5.15; A stable variant using slightly older toolchain components: GCC 13.3, binutils 2.41, GDB 14.2, glibc ...<|control11|><|separator|>
  44. [44]
    Public Git Hosting - uclibc-ng.git/blob - Changelog - repo.or.cz
    248 o Fixed a number of system call kernel type/user type translation. 249 problems ... 314 o Fixed v850 clone syscall. 315 Christian Krause. 316 o Fixed ...
  45. [45]
    Notes on Using uClibc Standard Library in Embedded Linux System
    Mar 10, 2023 · It can run on standard or MMU-less Linux systems and supports many processors such as i386, x86-64, ARM, MIPS, and PowerPC. Development of ...
  46. [46]
    docs/Glibc_vs_uClibc_Differences.txt · master · riscv / Uclibc Ng
    Sep 23, 2009 · The intended target for all my uClibc code is ANSI/ISO C99 and SUSv3. 84. compliance. While some glibc extensions are present, many will ...
  47. [47]
    About musl
    Simplicity tends to lead naturally to optimal code size and reasonably-good performance. musl favors simple algorithms over more complex ones unless there's ...
  48. [48]
    uClibc Is Still Around As A Lightweight C Standard Library - Phoronix
    Oct 29, 2017 · The uClibc library supports 28 different processor architectures compared to glibc supporting 18 and musl supporting 12. The uClibc library ...Missing: execution | Show results with:execution<|control11|><|separator|>
  49. [49]
    musl vs glibc: Pros, Cons, and Key Differences - TuxCare
    Aug 8, 2025 · Compare musl and glibc with our in-depth guide covering their pros, cons, and key differences. Learn which C library is best for your Linux ...Missing: uClibc philosophy
  50. [50]
    musl FAQ - musl libc
    For compiling and linking programs against musl, almost any standards-conforming C compiler (even pre-C99) should work. How do I build musl? In short ...
  51. [51]
    Many IoT Devices Exposed to Attacks Due to Unpatched Flaw in ...
    May 3, 2022 · Nozomi Networks has disclosed an unpatched vulnerability affecting uClibc, a popular library present in many IoT products.
  52. [52]
  53. [53]
    Nozomi Networks Discovers Unpatched DNS Bug in Popular C ...
    May 2, 2022 · uClibc-ng is a fork specifically designed for OpenWRT, a common OS for routers possibly deployed throughout various critical infrastructure ...
  54. [54]
    Development of uCLinux system in ARM-based embedded devices
    Sep 26, 2012 · Because the Linux source code is open and free, anyone who is interested in customizing it for PDAs, handhelds or portable devices can download ...
  55. [55]
    [PDF] Embedded Linux boot time optimization training - Bootlin
    For systems in which read and write performance matters, we recommend to use separate root filesystem (for quick boot time) and data partitions (for good.
  56. [56]
    [PDF] Embedded Linux optimizations - Bootlin
    Ideas for optimizing the Linux kernel and executables. Increasing speed. Reducing size: disk footprint and RAM. Reducing power consumption. Global perspective: ...<|separator|>
  57. [57]
    Bering-uClibc 6.x
    Sep 27, 2020 · uClibc-ng update to 1.0.25; Supports armv8a architecture aka Raspberry Pi 3. Version 6.1.0 was released in Oct 2017. Version 6.1.1 was ...
  58. [58]
    Bering-uClibc 5.x - Adding a Hardware Architecture Variant
    Just like the kernel, uClibc has a .config file which needs to be tailored for the new toolchain. For uClibc the file needs to be called repo/toolchain/config.$ ...<|control11|><|separator|>
  59. [59]
    [PDF] Buildroot: a nice, simple and efficient embedded Linux build system
    Buildroot will directly build a uClibc toolchain and use it for cross-compiling all packages. ▷ An external toolchain back-end, which allows use existing pre- ...
  60. [60]
    The Buildroot user manual
    Buildroot is a tool that simplifies and automates the process of building a complete Linux system for an embedded system, using cross-compilation.
  61. [61]
    The current state of the BusyBox project - LWN.net
    Jun 7, 2006 · In 1999, Erik Andersen saw potential for BusyBox beyond the Debian ... During this time Erik similarly rewrote and built a development community ...
  62. [62]
    Busybox is designed to be frugal with memory usage. However, it is ...
    Using libc which is better at using RAM sparingly. Static builds use RAM significantly more economically than dynamic ones. Here is a comparison of uclibc-based ...
  63. [63]
    Compiling BusyBox with uClibc - Ryan Finnie
    Feb 13, 2014 · I've compiled BusyBox with uClibc to keep the size down: a full static BusyBox binary is about 700 KB when compiled against uClibc, and about 1.8 MB when ...Missing: relationship timeline
  64. [64]
    Notes on specific toolchain features - crosstool-NG
    uClibc (not uClibc-ng) produces invalid binaries when compiled with GCC5 or newer (noticed at least on the i686 architecture); applications segfault while ...<|control11|><|separator|>
  65. [65]
    uclibc - OpenEmbedded Layer Index
    Other branches. This recipe in other branches of meta-synopsys: Branch, Recipe. morty (Yocto Project 2.2), uclibc 1.0.24 (this recipe). change history • about ...
  66. [66]
    buildroot - Gateworks Wiki
    Oct 3, 2025 · Buildroot is a powerful and low footprint rootfs. However, it is for advanced developers due to the fact there is a lot of manual configuration.Missing: workflow | Show results with:workflow