In der aktuellen MatLab Version gibt es die Möglichkeit über ein Toolkit
Simulink Modelle auf externen Hardware wie dem RaspberryPI auszuführen.
Des weitern kann man innerhalb dieser Programme S-Functions erstellen,
in welchen man C-Code wie zum Beispiel für den Zugriff auf die Hardware
integrieren kann, was soweit auch gut funktioniert.
Ich wollte nun jedoch aus dem Simulink-Programm über eine S-Function auf
eine MySQL Datenbank zugreifen und hatte hierzu ein einfaches
Testprogramm probiert:
1 | #include <stdio.h>
|
2 | #include <stdlib.h>
|
3 | #include <mysql/mysql.h>
|
4 |
|
5 | int main(int argc, char **argv)
|
6 | {
|
7 | printf("MySQL client version: %s\n", mysql_get_client_info());
|
8 |
|
9 | exit(0);
|
10 | }
|
Dieses lässt sich auf dem RaspberryPI nach der Installation der
Entsprechenden Client Library problemlos compilieren:
1 | sudo apt-get update
|
2 | sudo apt-get install libmysqlclient-dev
|
3 | gcc -o mysql_test mysql_test.c -lmysqlclient
|
Wenn ich diesen Code jedoch in die S-Function kopiere und die Ausführung
auf dem PI starte bekomme ich bei der darauf gestarteten Compilierung
die folgende Fehlermeldung:
1 | undefined reference to `mysql_get_client_info'
|
Ich hatte nun versucht an an verschiedenen Stellen der Konfiguration der
S-Funclion und der C/C++ Codegenerierung "-lmysqlclient" einzufügen,
worauf ich sinngemäß die Fehlermeldung bekam, dass er in den
verschiedenen Pfanden auf dem lokalen Windows PC die Library nicht
finden konnte. Jedoch wird die Kompilierung wie ich dies verstanden habe
auf dem PI durchgeführt, wobei "-lmysqlclient" auch im Makefile nicht
vorkommt. Dies manuell dort neben der standartmäßigen Linkungen
einzutragen ist auch nicht möglich, da es bei jeder Neukompilierung
ebenfalls neu geschieben wird.
Hat jemand eine Idee, wie man externe Librarys korrekt in die S-Function
einbindet?