在TM4c1294XL中嵌入python解释器

时间:2017-06-07 12:53:50

标签: c makefile texas-instruments python-embedding

我有一个我想在主板上运行的python文件。因此,我想在板上嵌入python解释器(用C语言编写)。我设法编写了运行Python文件的单独C项目。它按照我的意愿编译和运行。这是相同的makefile: -

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是我的项目“hello”的整个目录(它不是示例中的那个)。

我在“hello.c”中包含了“Classifier.h”,我收到以下错误:http://dpaste.com/3KKCF84

编译器包括选项(无预先包含):

"${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}"

链接器文件搜索路径:

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

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

我的一些配置错了吗?或者这是python解释器的一些问题?非常感谢任何帮助

修改: - 正如@KevinDTimm建议的那样,问题是我的环境没有pyconfig.h 。 python需要此文件来定义重要变量,如系统时钟源。我尝试删除现有pyconfig.h中的安全检查。我得到的第一个错误是在pytime.h中:

"_PyTime_t need signed 64-bit integer type"

由于以下代码块而进一步:

#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

在我看来,它需要一个存储时间的变量。我需要帮助来分配该变量。

1 个答案:

答案 0 :(得分:1)

From the linked problem

multiarch错误消息有点误导。它并没有失败,因为存在多重问题,它失败了,因为存在多操作系统问题。 /usr/include/python*/pyconfig.h试图找出从哪里找到真正的pyconfig.h,并且由于它不知道,它已经拯救了。

您基本上需要为目标环境生成pyconfig.h。我不知道是什么产生了pyconfig.h,也许是从源代码构建cython的? pyconfig.h看起来像gnu autoconf生成的东西,因此生成它时不应该有任何大问题。