[bootlin/training-materials updates] master: slides/sysdev-toolchains-definition: C library -> C standard library (f33b16bf)
Michael Opdenacker
michael.opdenacker at bootlin.com
Wed Nov 15 10:11:38 CET 2023
Repository : https://github.com/bootlin/training-materials
On branch : master
Link : https://github.com/bootlin/training-materials/commit/f33b16bfd1e3a3be8f6adcf9e6ba4b2de9dfb0b7
>---------------------------------------------------------------
commit f33b16bfd1e3a3be8f6adcf9e6ba4b2de9dfb0b7
Author: Michael Opdenacker <michael.opdenacker at bootlin.com>
Date: Wed Nov 15 10:11:38 2023 +0100
slides/sysdev-toolchains-definition: C library -> C standard library
As documented on https://en.wikipedia.org/wiki/C_standard_library
This avoid confusion with other C libraries
Signed-off-by: Michael Opdenacker <michael.opdenacker at bootlin.com>
Reported-by: Ivan Ivanyuk <ivan.ivanyuk at evbox.com>
>---------------------------------------------------------------
f33b16bfd1e3a3be8f6adcf9e6ba4b2de9dfb0b7
.../sysdev-toolchains-definition.tex | 37 +++++++++++-----------
1 file changed, 19 insertions(+), 18 deletions(-)
diff --git a/slides/sysdev-toolchains-definition/sysdev-toolchains-definition.tex b/slides/sysdev-toolchains-definition/sysdev-toolchains-definition.tex
index 1173f392..f3a9fc1a 100644
--- a/slides/sysdev-toolchains-definition/sysdev-toolchains-definition.tex
+++ b/slides/sysdev-toolchains-definition/sysdev-toolchains-definition.tex
@@ -106,13 +106,13 @@
\begin{columns}
\column{0.7\textwidth}
\begin{itemize}
- \item The C library and compiled programs needs to interact with the kernel
+ \item The C standard library and compiled programs needs to interact with the kernel
\begin{itemize}
\item Available system calls and their numbers
\item Constant definitions
\item Data structures, etc.
\end{itemize}
- \item Therefore, compiling the C library requires kernel headers, and many
+ \item Therefore, compiling the C standard library requires kernel headers, and many
applications also require them.
\item Available in \code{<linux/...>} and \code{<asm/...>} and a few
other directories corresponding to the ones visible in
@@ -173,22 +173,23 @@ struct stat {
\end{frame}
\begin{frame}
- \frametitle{C library}
+ \frametitle{C standard library}
\begin{columns}
\column{0.6\textwidth}
\begin{itemize}
- \item The C library is an essential component of a Linux system
+ \item The C standard library is an essential component of a Linux
+ system.
\begin{itemize}
\item Interface between the applications and the kernel
\item Provides the well-known standard C API to ease application
development
\end{itemize}
- \item Several C libraries are available:
+ \item Several C standard libraries are available:
{\em glibc}, {\em uClibc}, {\em musl}, {\em klibc}, {\em
newlib}...
- \item The choice of the C library must be made at
+ \item The choice of the C standard library must be made at
cross-compiling toolchain generation time, as the GCC compiler is
- compiled against a specific C library.
+ compiled against a specific C standard library.
\end{itemize}
\column{0.4\textwidth}
\includegraphics[width=\textwidth]{slides/sysdev-toolchains-definition/Linux_kernel_System_Call_Interface_and_uClibc.pdf}\\
@@ -202,7 +203,7 @@ struct stat {
\column{0.7\textwidth}
\begin{itemize}
\item License: LGPL
- \item C library from the GNU project
+ \item C standard library from the GNU project
\item Designed for performance, standards compliance and portability
\item Found on all GNU / Linux host systems
\item Of course, actively maintained
@@ -226,12 +227,12 @@ struct stat {
\begin{itemize}
\item \url{https://uclibc-ng.org/}
\item A continuation of the old uClibc project, license: LGPL
- \item Lightweight C library for small embedded systems
+ \item Lightweight C standard library for small embedded systems
\begin{itemize}
\item High configurability: many features can be enabled or
disabled through a menuconfig interface.
\item Supports most embedded architectures, including MMU-less
- ones (ARM Cortex-M, Blackfin, etc.). The only library
+ ones (ARM Cortex-M, Blackfin, etc.). The only standard library
supporting ARM noMMU.
\item No guaranteed binary compatibility. May need to
recompile applications when the library configuration changes.
@@ -246,16 +247,16 @@ struct stat {
\end{frame}
\begin{frame}
- \frametitle{musl C library}
+ \frametitle{musl C standard library}
\begin{columns}
\column{0.85\textwidth}
\url{https://www.musl-libc.org/}
\begin{itemize}
- \item A lightweight, fast and simple library for embedded systems
+ \item A lightweight, fast and simple standard library for embedded systems
\item Created while uClibc's development was stalled
\item In particular, great at making small static executables,
which can run anywhere, even on a system built
- from another C library.
+ from another C standard library.
\item More permissive license (MIT), making it easier to release
static executables. We will talk about the requirements
of the LGPL license (glibc, uClibc) later.
@@ -294,7 +295,7 @@ struct stat {
\end{frame}
\begin{frame}
- \frametitle{Advise for choosing the C library}
+ \frametitle{Advise for choosing the C standard library}
\begin{itemize}
\item Advice to start developing and debugging your applications
with {\em glibc}, which is the most standard solution
@@ -308,7 +309,7 @@ struct stat {
boot time, though, typically booting on a filesystem loaded in RAM.
\end{itemize}
\item If you run into trouble, it could be because of missing
- features in the C library.
+ features in the C standard library.
\item In case you wish to make static executables, {\em musl} will
be an easier choice in terms of licensing constraints.
\end{itemize}
@@ -318,7 +319,7 @@ struct stat {
\begin{itemize}
\item A {\bf Linux toolchain}
\begin{itemize}
- \item is a toolchain that includes a Linux-ready C library, which
+ \item is a toolchain that includes a Linux-ready C standard library, which
uses the Linux system calls to implement system services
\item can be used to build Linux user-space applications, but also
bare-metal code (firmware, bootloader, Linux kernel)
@@ -328,8 +329,8 @@ struct stat {
\end{itemize}
\item A {\bf bare metal toolchain}
\begin{itemize}
- \item is a toolchain that does not include a C library, or a very
- minimal C library that isn't tied to a particular operating
+ \item is a toolchain that does not include a C standard library, or a very
+ minimal one that isn't tied to a particular operating
system
\item can be used to build only bare-metal code (firmware,
bootloader, Linux kernel)
More information about the training-materials-updates
mailing list