These options control compilation and linking when using picolibc:
--oslib=library ¶Search the library named library after the C library, permitting symbols undefined by the C library to be defined by this library. The C library, libgcc and this library are placed between --start-group and --end-group flags so that each can refer to symbols in the others. For many targets, picolibc provides a ‘semihost’ variant (specified with --oslib=semihost) which provides enough basic OS functionality to support console and file I/O when run in an emulator or when using an in-circuit debugger.
--crt0=[none|minimal|hosted|semihost] ¶Replace the default crt0.o name with
crt0-variant.o. The ‘none’ variant provides no
startup code at all, allowing the user to supply their
own. ‘minimal’ performs basic memory setup but does not invoke
any constructors. When no -crt0 option is provided, the
default initialization code adds calls to all
constructors. ‘hosted’ adds a call to exit when
main returns. ‘semihost’ accesses a command line parameter
supplied via the semihosting interface and splits that into arguments
at whitespace boundaries, passing the resulting array of strings to
main in argc and argv. On some targets, including
aarch64, arc, arm, loongarch, m68k, riscv, super-h and x86,
‘semihost’ also traps hardware exceptions and prints information
to the console. Note that --crt0=semihost depends upon APIs
provided by --oslib=semihost.
--printf=[d|f|l|i|m] ¶Select the printf variant. Picolibc provides five different printf
variants which offer decreasing levels of functionality along with
decreasing code size. ‘d’ is the default level, offering full C17
and POSIX.1-2024 conformance. ‘f’ provides the same feature set,
but supports float values instead of double which are
passed using the printf_float macro. ‘l’ elides all
floating point and POSIX positional parameter support. ‘i’ limits
integers to those no larger than long. ‘m’ removes support
for most formatting options including width and precision. The formats
and arguments are still parsed correctly, but output does not respect
those parameters.
--scanf=[d|f|l|i|m] ¶Select the scanf variant. Picolibc provides five different scanf
variants which offer decreasing levels of functionality along with
decreasing code size. ‘d’ is the default level, offering full C17
and POSIX.1-2024 conformance. ‘f’ removes support for
double values. ‘l’ elides all floating point
support. ‘i’ limits integers to those no larger than
long. ‘m’ removes support for %[ conversion specifiers.