Jump to content

[C/C++] Python Include- bzw. Library-Pfad in C-Makefile des RED-Brick einbinden?


Recommended Posts

Hallo liebe Community,

 

ich bin noch ein ziemlicher Tinkerforge-Neuling - aber schon jetzt total begeistert, wie schnell man damit Dinge zum Laufen bekommt :)

 

Leider komme ich aktuell bei einer Sache nicht wirklich weiter und bin dazu auch im Web nicht fündig geworden:

Mein Tinkerforge-System besteht aus 1x IO-4 Bricklet, 1x IO-16 Bricklet, 1x Master Brick und 1x RED-Brick. Dazu habe ich eine Anwendung in C geschrieben, die aus mehreren .c und .h Dateien besteht. Diese kann ich über den Brick Viewer auf den RED-Brick laden und dort mittels GCC compilieren, das entsprechende Makefile ist im Anhang. Soweit funktioniert das alles auch bestens, das Programm läuft, wie es soll...

Nun möchte ich gerne ein Python Script (aus einer eigenen Datei heraus, z.B. "test.py") aus meinem C-Programm heraus starten können. Das gelingt mir in meiner Windows-Umgebung auch, hier nutze ich Python 3.5 und Dev-C++ mit GCC. In den Projekt-Optionen teile ich dem Linker u.a. über die Optionen -I<Pfad_zu"/include"> bzw. -L<Pfad_zu"/libs"> -lpython35 mit, wo er die entsprechenden Python Incudes bzw. Bibliotheken findet.

In meinem C-Programm binde ich die Datei "<Python.h>" ein, alles compiliert sauber und auch die Ausführung der Datei "test.py" aus meinem C-Programm heraus funktioniert - bislang allerdings eben nur unter Windows.

 

Ich scheitere derzeit noch daran, das angehängte Makefile so zu ergänzen, dass dem GCC Compiler auf dem RED-Brick bekannt gemacht wird, wo er dort die entsprechenden Python Includes bzw. Libraries findet. Mit einem "C:\...\..."

hinter den Optionen -I bzw. -L ist das beim RED-Brick ja nicht getan  ;)

 

Würde mich freuen, wenn mir da jemand einen heißen Tipp geben kann - vielen Dank vorab!

 

 

Makefile

Link to comment
Share on other sites

Auf dem RED Brick ist standardmäßig das Python3 Development Package nicht installiert. Du musst also zuerst über die Console python3-dev nachinstallieren. Am einfachsten geht das wenn der RED Brick Internetverbindung hat:

 

sudo apt-get install python3-dev

 

Dann kannst du das python3-config Tool nutzen, das dir sagt wo die Header und Libs sind und welche C- und LD-Flags zu setzen sind. Dazu einfach die CFLAGS und LIBS Zeilen in deinem Makefile so abändern:

 

CFLAGS=-c -Wall -I/usr/include/tinkerforge $(shell python3-config --cflags)
LIBS=-ltinkerforge -lpthread $(shell python3-config --ldflags)

 

Auf dem RED Brick wirst du allerdings Python 3.4 haben, nicht 3.5.

Link to comment
Share on other sites

Ich bin genau nach dieser Anleitung vorgegangen - und was soll ich sagen: damit hat es auf Anhieb super funktioniert! Das Starten der Python Skripte aus meinem C Code heraus läuft nun auch auf dem RED-Brick einwandfrei! :D

 

Ein ganz herzliches Dankeschön für die schnelle und kompetente Hilfe!!

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...