如何使用g编译和链接python3包装函数

2024-04-20 04:06:36 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图使用gcc和makefile将一些C包装器函数编译到python3.4,但是我没有成功地找到正确的编译和链接标志。我用的是Ubuntu 14

现在我在makefile中尝试的是:

CC      = gcc
CFLAGS  = -Wall -std=c99 `pkg-config --cflags python3` 
LDFLAGS = `pkg-config --libs python3` 

final: functions.o wrapper.o
$(CC) -o functions.o $(CFLAGS) $(LDFLAGS)

functions.o: functions.c functions.h
$(CC) $(CFLAGS) -c functions.c

wrapper.o: wrapper.c
$(CC) $(CFLAGS) -g -c wrapper.c

使用此命令可获取以下错误:

^{pr2}$

另外,我在makefile方面没有什么经验,所以如果我在这个过程中做错了什么,我就不会这么做


Tags: 函数config链接ubuntu标志pkgfunctionswrapper
1条回答
网友
1楼 · 发布于 2024-04-20 04:06:36

您可能应该找到一个关于Makefiles的好教程,但是这个教程应该让您开始:

CC      = gcc
CFLAGS  = -Wall -std=c99 `pkg-config  cflags python-3.4`
CFLAGS  += -fPIC
LDFLAGS = `pkg-config  libs python-3.4`

all: myfunctions.so

myfunctions.so: wrapper.o functions.o
    $(CC) -shared $(LDFLAGS) $^ -o $@

如果要为Python创建C包装器,则需要创建一个共享对象。要做到这一点,至少在编译时必须使用-fPIC,在链接时使用-shared。上面的示例Makefile使用内置规则将.c文件编译为.o文件。本例中的共享对象将被创建为myfunctions.so,但您可以将myfunctions.so:更改为您喜欢调用的任何名称。可以使用make all调用这个Makefile来生成共享对象。在

相关问题 更多 >