The goal of this project is to provide C and C++ standard library support for the Raspberry Pi bare metal environment Circle.
Newlib is used as the standard C library. The fork circle-newlib contains the changes for building Newlib in combination with Circle.
mbed TLS can optionally be used for TLS connections in
Circle (call configure with --opt-tls
, see also the
README file for circle-mbedtls).
A toolchain from Arm GNU Toolchain Downloads:
- gcc 14.3.Rel1 hosted on Intel Linux or Windows Subsystem for Linux (WSL/WSL2):
- gcc 14.3.Rel1 hosted on AArch64 Linux:
Add the toolchain to the path, then:
git clone --recursive https://github.com/smuehlst/circle-stdlib.git
cd circle-stdlib
./configure
make
This configures the build for the default 32-bit toolchain with the arm-none-eabi-
prefix.
The configure
script has the following options:
$ ./configure -h
usage: configure [ <option> ... ]
Configure Circle with newlib standard C library and mbed TLS library.
Options:
-d, --debug build with debug information, without optimizer
-h, --help show usage message
-n, --no-cpp do not support C++ standard library
-o, --option <name>[=<value>] additional preprocessor define (optionally with value)
can be repeated
--opt-tls build with mbed TLS support
-p <string>, --prefix <string> prefix of the toolchain commands (default: arm-none-eabi-)
--qemu build for running under QEMU in semihosting mode
-r <number>, --raspberrypi <number>
Circle Raspberry Pi model number (1, 2, 3, 4, 5, default: 1)
--softfp use float ABI setting "softfp" instead of "hard"
-s <path>, --stddefpath <path>
path where stddef.h header is located (only necessary
if script cannot determine it automatically)
To clean the project directory, the following commands can be used:
make clean
make mrproper # removes the configuration too
make build-samples
The resulting executables are normal Circle bare-metal applications. Circle's standard installation and debugging instructions apply.
For running the programs under QEMU see Circle's corresponding notes on QEMU.
See CHANGELOG.md.
This project is licensed under the GNU GENERAL PUBLIC LICENSE Version 3 - see the LICENSE file for details