Linux Platforms =============== The following table shows the currently supported Linux platforms. .. list-table:: Supported Linux Platforms :widths: 10 10 10 10 10 25 25 :header-rows: 1 * - OS - Version - CPU - Network Stack - Toolchain - Architecture PIL - Architecture PSL * - Ubuntu - 22.04 LTS - x64 - OS Default - GCC 12.3.0 - x86_64leElfgcc12.3.0 x86_64leElfgcc12.3.0CERT - x86_64leElfgcc12.3.0-Linux5 x86_64leElfgcc12.3.0CERT-Linux5 * - Ubuntu - 18.04 LTS - ARMv8 (64-bit) - OS Default - GCC 7.3.0 - armv8leElfgcc7.3.0 armv8leElfgcc7.3.0CERT - armv8leElfgcc7.3.0-Linux4 armv8leElfgcc7.3.0CERT-Linux4 How the PIL was built for Linux platforms ----------------------------------------- This section describes how RTI built the Platform Independent Library (PIL) for Linux. The following table shows the compiler flags RTI used to create the PIL for Linux platforms: .. list-table:: PIL Compiler Flags for Linux Platforms :name: LinuxRequiredFlags :widths: 30 20 50 :header-rows: 1 * - Architecture PIL - Library Format - Compiler Flags Used by RTI * - x86_64leElfgcc12.3.0 - Static Release - **C Flags:** -std=c99 -fsigned-char -O2 -nostdinc -Winit-self -fstrict-aliasing -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wdouble-promotion" -DNDEBUG **C++ Flags:** -Winit-self -fstrict-aliasing -O2 -nostdinc -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DNDEBUG * - - Static Debug - **C Flags:** -std=c99 -fsigned-char -nostdinc -Winit-self -fstrict-aliasing -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wdouble-promotion" -g -DRTI_PIL=1 **C++ Flags:** -Winit-self -fsigned-char -nostdinc -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g -DRTI_PIL=1 * - x86_64leElfgcc12.3.0CERT - Static Release - **C Flags:** -std=c99 -fsigned-char -O2 -nostdinc -Winit-self -fstrict-aliasing -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wdouble-promotion" -DNDEBUG -DRTI_PIL=1 -DRTI_CERT * - - Static Debug - **C Flags:** -std=c99 -fsigned-char -nostdinc -Winit-self -fstrict-aliasing -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wdouble-promotion -g -DRTI_PIL=1 -DRTI_CERT * - armv8leElfgcc7.3.0 - Static Release - **C Flags:** -std=c99 -fsigned-char -O2 -nostdinc -Winit-self -fstrict-aliasing -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wdouble-promotion" -DNDEBUG -DRTI_PIL=1 **C++ Flags:** -Winit-self -fsigned-char -nostdinc -O2 -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DNDEBUG -DRTI_PIL=1 * - - Static Debug - **C Flags:** -std=c99 -fsigned-char -nostdinc -Winit-self -fstrict-aliasing -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wdouble-promotion" -g -DRTI_PIL=1 **C++ Flags:** -Winit-self -fsigned-char fstrict-aliasing -nostdinc -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g -DRTI_PIL=1 * - armv8leElfgcc7.3.0CERT - Static Release - **C Flags:** -std=c99 -fsigned-char -O2 -nostdinc -Winit-self -fstrict-aliasing -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wdouble-promotion" -DNDEBUG -DRTI_PIL=1 -DRTI_CERT * - - Static Debug - **C Flags:** -std=c99 -fsigned-char -nostdinc -Winit-self -fstrict-aliasing -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wdouble-promotion" -g -DRTI_PIL=1 -DRTI_CERT .. warning:: The |rti_me| platform independent libraries are built without the standard C header-files. However, in |rti_me| 4.1.0, there is one direct call to the C library API ``qsort``. In addition, GCC may insert direct calls to GLIBC functions and other required functions, such as default C++ constructors and destructors. For this reason, it is necessary to use a GCC version that is compatible with the GCC version used to build the platform independent libraries, or provide a C library with an implementation of the required functions. Future versions of |rti_me| will remove these dependencies. Building the PSL from source for Linux platforms ------------------------------------------------ Refer to :ref:`psl_compiling` for instructions on how to build your own Platform Support Library (PSL) for Linux platforms. Building Linux applications with |me_h| --------------------------------------- This section describes how RTI built the Platform Support Library (PSL) for Linux platforms. You must build applications with compatible flags to the PIL and PSL in order to operate with |me|. The PSL must also be binary compatible with the PIL. Applications must not specify the ``RTI_PSL`` or ``RTI_PIL`` preprocessor definitions. The following table shows the compiler flags and required options that RTI used to build the PSL for FreeRTOS platforms. When you build the PSL with ``rtime-make``, the ``--target`` argument automatically adds all the necessary flags for the specified architecture. .. list-table:: PSL Compiler Flags for Linux Platforms :widths: 30 20 50 :header-rows: 1 * - Architecture PSL - Library Format - Compiler Flags Used by RTI * - x86_64leElfgcc12.3.0-Linux5 - Static Release - **C Flags:** -std=c99 -Winit-self -O2 -fsigned-char -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DNDEBUG -DRTI_PSL=1 **C++ Flags:** -Winit-self -O2 -fsigned-char -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DNDEBUG -DRTI_PSL=1 * - - Static Debug - **C Flags:** -std=c99 -fsigned-char -Winit-self -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g-DRTI_PSL=1 **C++ Flags:** -Winit-self -fsigned-char -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g -DRTI_PSL=1 * - x86_64leElfgcc12.3.0CERT-Linux5 - Static Release - **C Flags:** -std=c99 -O2 -fsigned-char -Winit-self -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DNDEBUG -DRTI_PSL=1 -DRTI_CERT * - - Static Debug - **C Flags:** -std=c99 -fsigned-char -Winit-self -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g-DRTI_PSL=1 -DRTI_CERT * - armv8leElfgcc7.3.0-Linux4 - Static Release - **C Flags:** -std=c99 -O2 -fsigned-char -Winit-self -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DNDEBUG -DRTI_PSL=1 **C++ Flags:** -Winit-self -O2 -fsigned-char -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DNDEBUG -DRTI_PSL=1 * - - Static Debug - **C Flags:** -std=c99 -fsigned-char -Winit-self -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g-DRTI_PSL=1 **C++ Flags:** -Winit-self -fsigned-char -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wnon-virtual-dtor -Wcast-align -Wunused -Woverloaded-virtual -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g -DRTI_PSL=1 * - armv8leElfgcc7.3.0CERT-Linux4 - Static Release - **C Flags:** -std=c99 -O2 -fsigned-char -Winit-self -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -DNDEBUG -DRTI_PSL=1 -DRTI_CERT * - - Static Debug - **C Flags:** -std=c99 -fsigned-char -Winit-self -fstrict-aliasing -Wstrict-aliasing=3 -Wmissing-declarations -Wall -Wextra -Wpedantic -Wshadow -Wcast-align -Wunused -Wconversion -Wsign-conversion -Wlogical-op -Wdouble-promotion -g-DRTI_PSL=1 -DRTI_CERT