Linux Version Compatibilities
When generating a shared object (.so) file on Linux® platform, MATLAB® uses the GLIBC and GLIBCXX (GLIBC++) library versions provided by the operating system (OS). This means that when running these models on an equivalent OS from another vendor, you may encounter compatibility issues which prevent the model from running.
Supported Library Versions for Different OS
Linux OS | GLIBC Library Version | GLIBCXX Library Version | GCC Library Version |
---|---|---|---|
Debian® 9 | 2.24-11 | 3.4.22 | 6.3 |
Debian 10 | 2.28-10 | 3.4.25 | 8.3 |
Red Hat® 6.6 | 2.12 | 3.4.13 | 4.4.7 |
Red Hat 7.7 | 2.17 | 3.4.19 | 4.8.5 |
SUSE® 11.4 | 2.11.3 | — | 4.3.4 |
SUSE 12.3 | 2.19 | — | 4.8 |
SUSE 12.4 | 2.22 | — | 4.8 |
When generating a .so file, the compiler only uses the latest GLIBC/GLIBCXX version for each individual library function. So while the latest Debian 10 GLIBC version is 2.28, SerDes Toolbox™ only uses a sub-set of the GLIBC libraries. Depending on the blocks being used, it’s possible that only v2.12 is required.
For example, a generated .so file for a random Rx AMI model on Debian 10 requires these libraries:
0x08922974 0x00 05 GLIBCXX_3.4
0x06969194 0x00 04 GLIBC_2.14
0x09691a75 0x00 03 GLIBC_2.2.5
0x09691a75 0x00 02 GLIBC_2.2.5
This shared object can run on any system with GLIBC v2.14 or later and GLIBCXX v3.4 or later. This means this shared object can run on Red Hat 7.7, but not on Red Hat 6.6.
Note
This only applies to Linux shared objects. Windows® only requires the Universal C Runtime libraries to be compatible with ALL GLIBC/GLIBCXX versions.
To enable the compatibility mode on Linux, click the Model Settings button in the Modeling tab in
the Simulink® toolstrip. This launches the Configuration Parameters dialog box. From there,
click the Code Generation option in the left panel and set
Build configuration to Compatibility
.
Compatibility mode supports backwards compatibility to GLIBC version 2.2.5 only, as required by the SerDes Toolbox datapath blocks. If you have introduced any custom code that is not supported by the compatibility mode, you need to manually generate the shared objects.
To generate the shared objects manually on an earlier Linux version than what is officially supported in MATLAB is to export the .so file on a fully supported platform, then manually run the build on an earlier version. To do this:
Go to the transmitter or receiver build directory, denoted by
Tx_ert_rtw
andRx_ert_rtw
, respectively.From the command line, type the following command:
make –f Tx.mk
make –f Rx.mk
The generated shared objects reside one directory above the build directory (
../Tx.so
for transmitter and../Rx.so
for receiver.)Copy the .so file to the full name used by SerDes Toolbox.
Note
Enabling compatibility mode or building the shared object manually requires a Simulink Coder™ or Embedded Coder® license.
For a list of supported Linux versions, see Previous Releases: System Requirements and Supported Compilers.