Picolibc: C Libraries for Smaller Embedded Systems

Picolibc is a set of standard C libraries, both libc and libm, designed for smaller embedded systems with limited ROM and RAM. Picolibc includes code from Newlib and AVR Libc. Picolibc has been tested on RISC-V and ARM processors.

Picolibc was previously named newlib-nano, but that name has another definition within newlib and so the Picolibc name was adopted instead.

Current Status

Version 1.0 was released 2019-07-22.


Picolibc packages are available in the dist directory here

Debian Packages

Pre-built Debian packages for Debian are available in my personal package archive. Instructions on how to set that up for your machine are available in the README in that directory.

There are two Picolibc packages in the archive:

  • picolibc-riscv64-unknown-elf. RISC-V embedded libraries, built using gcc-riscv64-unknown-elf.

  • picolibc-arm-none-eabi. ARM embedded libraries, built using gcc-arm-none-eabi

Source Code

You can find Picolibc in either my git repository or github

As Picolibc is a combination of code from both Newlib and AVR-libc, the licensing of the source code is fairly complicated, but the general result is similar to the BSD 3-clause or MIT license.


Changes to picolibc code, or to the picolibc build environment, can be submitted in the github project above, or to the picolibc mailing list. Changes to code shared with newlib should also be submitted to newlib.