path: root/user/start/tools.rst
diff options
authorUtkarsh Rai <>2020-04-04 09:16:22 +0530
committerGedare Bloom <>2020-04-04 22:19:46 -0600
commitb22c1e12ae959d75e5065f20bc5edd72ebf23682 (patch)
tree12ef79d2b7100a9189b484c7753c164435336a77 /user/start/tools.rst
parentcommon: fix title page (diff)
Removed '-' character and provided definition list format
Diffstat (limited to 'user/start/tools.rst')
1 files changed, 33 insertions, 0 deletions
diff --git a/user/start/tools.rst b/user/start/tools.rst
index c3f039b..1d83062 100644
--- a/user/start/tools.rst
+++ b/user/start/tools.rst
@@ -3,6 +3,7 @@
.. Copyright (C) 2019 embedded brains GmbH
.. Copyright (C) 2019 Sebastian Huber
.. Copyright (C) 2020 Chris Johns
+.. Copyright (C) 2020 Utkarsh Rai
.. _QuickStartTools:
@@ -76,3 +77,35 @@ source code used.
Add ``--verbose`` to the GCC command for the the verbose version details.
+Need for RTEMS-Specific Cross-Compiler
+New users are often confused as to why they cannot use their distribution's
+cross-compiler for their target on rtems, e.g., the riscv64-linux-gnu or the
+arm-none-eabi-gcc on RTEMS. Below mentioned are some of the reasons for using
+the RTEMS cross-compiler.
+ Correct configuration of Newlib
+ Newlib is a C standard library implementation intended for use on embedded
+ systems. Most of the POSIX and libc support for RTEMS is derived from
+ Newlib. The RTEMS cross-compiler configures Newlib correctly for RTEMS.
+ Threading in GCC support libraries
+ Several threading packages in GCC such as Go threads (libgo), OpenMP
+ (libgomp), and OpenACC need to be customized according to RTEMS. This is
+ done by the RTEMS specific cross-compiler.
+ Provide preprocessor define __rtems__
+ The ``__rtems__`` preprocessor define is used to provide conditional code
+ compilation in source files that are shared with other projects e.g. in
+ Newlib or imported code from FreeBSD.
+ Multilib variants to match the BSP
+ RTEMS configures GCC to create separate runtime libraries for each
+ supported instruction set, floating point unit, vector unit, word size
+ (e.g. 32-bit and 64-bit), endianness, ABI, processor errata workarounds,
+ and so on in the architecture. These libraries are termed as :ref:`Multilib
+ <TargetArchitectures>` variants. Multilib variants to match the BSP are set
+ by selecting a specific set of machine options using the RTEMS
+ cross-compiler.