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|
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 RedHat 7.7, but not on RedHat 6.6.
This only applies to Linux .shared objects. Windows only requires the Universal C Runtime libraries to be compatible with ALL GLIBC/GLIBCXX versions.
A simple workaround to generate shared objects 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
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
Copy the .so file to the full name used by SerDes Toolbox.
Manual build of the shared object requires a Simulink® Coder™ or Embedded Coder® license.
For a list of supported Linux versions, see Previous Releases: System Requirements and Supported Compilers.