Wie ich den Matlab/Simulink S-Function-Fehler gelöst habe: mexa64: GLIBCXX_3.4.xx not found
Problem
Beim Versuch, ein Simulink-Modell auszuführen, das eine mit mex kompilierte S-Function verwendet, trat der folgende Fehler auf:
Invalid MEX-file '/home/user/mysfunction.mexa64': /opt/matlab/R2025a/bin/glnxa64/../../sys/os/glnxa64/libstdc++.so.6: version `GLIBCXX_3.4.32' not found (required by /home/user/mysfunction.mexa64)Lösung
Dieser Fehler tritt auf, weil die Version von libstdc++.so.6, die Matlab verwendet (in diesem Fall /opt/matlab/R2025a/sys/os/glnxa64/libstdc++.so.6), älter ist als die, die von der kompilierten S-Function benötigt wird (die während der Kompilierung mit mex verwendet wird).
In meinem Fall kommt Matlab mit GLIBCXX_3.4.30, aber meine System-libstdc++ ist GLIBCXX_3.4.32. Dies ist eine sehr geringfügige Abweichung, die Systembibliothek ist nur minimal neuer (Ubuntu 24.04 LTS, 2025-08-06).
Ich habe dieses Problem gelöst, indem ich die libstdc++.so.6-Datei im Matlab-Verzeichnis gelöscht habe, da es auch mit der libstdc++.so.6-Datei des Systems genauso gut funktioniert.
Bevor Sie diese Lösung versuchen, stellen Sie sicher, dass Sie ein Backup der Originaldatei haben.
rm /opt/matlab/R2025a/sys/os/glnxa64/libstdc++.so.*Danach müssen Sie Matlab neu starten und auch Ihre S-Function mit mex neu kompilieren. Der Fehler sollte danach behoben sein.