2017-06-07 4 views
1

J'ai un fichier python que je veux lancer sur le tableau. Par conséquent, je veux intégrer l'interpréteur python (écrit en C) dans le tableau. J'ai réussi à écrire un projet C séparé qui exécute le fichier Python. Il compile et fonctionne comme je veux. Voici le Makefile pour même: -Intégration de l'interpréteur python dans le TM4c1294XL

CC=gcc 
CFLAGS=-I python3.5 -I config -I . -c -w 
LDFLAGS= -lpython3.5m -lpthread -ldl -lutil -lm -Xlinker -export-dynamic -Wl,-O1 -Wl,-Bsymbolic-functions 

all: classifier trainer test link 

test: 
    $(CC) $(CFLAGS) test.c 

trainer: Trainer.c 
    $(CC) $(CFLAGS) Trainer.c 
    $(CC) Trainer.o $(LDFLAGS) -o Trainer 

.ONESHELL: 
classifier: Classifier.c 
    $(CC) $(CFLAGS) Classifier.c 
    # $(CC) Classifier.o $(LLFLAGS) -o Classifier 

link: 
    $(CC) test.o Classifier.o $(LDFLAGS) -o test 

clean: 
    rm -f Trainer.o Trainer Classifier.o Classifier 

http://dpaste.com/3BCY2RE est mon répertoire entier du projet « bonjour » (Il est pas celui des exemples).

I inclus "Classifier.h" dans mon "hello.c" et je reçois les erreurs suivantes: http://dpaste.com/3KKCF84

compilateur (options d'inclusion Pas preincludes):

"${CG_TOOL_ROOT}/include" 
"${workspace_loc:/${ProjName}/TerrainPredict}" 
"${workspace_loc:/${ProjName}/TerrainPredict/config}" 
"${workspace_loc:/${ProjName}/TerrainPredict/python3.5}" 
"${SW_ROOT}/examples/boards/ek-tm4c1294xl" 
"${SW_ROOT}" 

chemins de recherche de fichiers Linker :

"libc.a" 
"${workspace_loc:/${ProjName}/TerrainPredict/libterrainclf.a}" 
"${SW_ROOT}/driverlib/ccs/Debug/driverlib.lib" 

et:

"${CG_TOOL_ROOT}/lib" 
"${workspace_loc:/hello/TerrainPredict/libterrainclf.a}" 
"${CG_TOOL_ROOT}/include" 

Ai-je tort avec certaines de mes configurations? Ou est-ce un problème avec l'interpréteur Python? Toute aide est grandement appréciée

EDIT: - Comme suggéré @KevinDTimm, le problème est que il n'y a pas pyconfig.h pour mon environnement. Ce fichier est requis par python pour définir les variables importantes comme la source de l'horloge système. J'ai essayé de supprimer les contrôles de sécurité dans pyconfig.h existant. La première erreur que je reçois est pytime.h comme:

"_PyTime_t need signed 64-bit integer type" 

Ce qui était encore en raison du bloc de code suivant:

#ifdef PY_INT64_T 
/* _PyTime_t: Python timestamp with subsecond precision. It can be used to 
    store a duration, and so indirectly a date (related to another date, like 
    UNIX epoch). */ 
typedef PY_INT64_T _PyTime_t; 
#define _PyTime_MIN PY_LLONG_MIN 
#define _PyTime_MAX PY_LLONG_MAX 
#else 
# error "_PyTime_t need signed 64-bit integer type" 
#endif 

Il me semble qu'il a besoin d'une variable qui stocke le temps. J'ai besoin d'aide pour assigner cette variable.

Répondre

1

From the linked problem

Le message d'erreur multiarch est un peu trompeur. Il ne manque pas car il y a un problème de multiarchitecture, il échoue parce qu'il y a un problème multi-OS. /usr/include/python*/pyconfig.h essaye de trouver où trouver le vrai pyconfig.h, et comme il ne le sait pas, il est en train de s'en sortir.

Vous avez essentiellement besoin d'un pyconfig.h généré pour l'environnement cible. Je ne sais pas ce qui a produit pyconfig.h, peut-être la construction de Cython de la source? pyconfig.h ressemble à quelque chose généré par gnu autoconf, donc il ne devrait pas y avoir de gros problèmes pour le générer.

+0

J'ai compris la même chose entre-temps! Comment obtenir un pyconfig.h pour les cartes TI? Y at-il un travail autour qui ne l'exige pas? Comment écrire un si c'est nécessaire? –

+0

Désolé mais je n'ai pas de réponse - je sais quel est le problème, mais pas la solution détaillée – KevinDTimm