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 13.2.Rel1 hosted on Intel Linux or Windows 10 Subsystem for Linux (WSL) (build is tested with GitHub Action):
- gcc 13.2.Rel1 hosted on 64-bit Linux on Raspberry Pi (not tested, but reported to work):
Add the toolchain to the path, then:
git clone --recursive https://github.com/smuehlst/circle-stdlib.git
cd circle-stdlib
./configure
make
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
See CHANGELOG.md.
This project is licensed under the GNU GENERAL PUBLIC LICENSE Version 3 - see the LICENSE file for details