gpt4 book ai didi

c - #include<>'ing 不同版本的 Python.h 并链接多个版本的 Python

转载 作者:行者123 更新时间:2023-12-02 17:59:17 25 4
gpt4 key购买 nike

在我的新工作中维护旧源时,我正在努力让事情变得更干净。在本例中,我有一个大项目(1,001 个源文件),它非常静态地依赖于 python2.5。在我的开发机器上,我安装了 2.6,并且我正在尝试让这个项目包含并链接到 >=2.5 和 <3.0。

我目前看到两个问题。从 .c 文件:

#include <python2.5/Python.h>

从 makefile 中

LDFLAGS = $(LIBS) -lusb-1.0 -lpthread -lSound -lsqlite3 -lm -lglib-2.0 -lpython2.5

所以,我的问题是:如何更改 .c 文件以使其使用适当的目录以及如何更新 makefile 以使其链接到适当的库?

编辑:当我这样做时,我想我可以给 glib-2.0 相同的待遇。

最佳答案

我不会更改 C 文件,但会更改包含路径和 LDFLAGS。

所以 .C 将具有:

#include <Python.h>

并在包含路径上添加 -I/path/to/python/2.5/include 和 -Lpython2.5

如果使用 makefile,则可以使用 += 将选项添加到包含路径和库路径。

LDFLAGS = $(LIBS) -lusb-1.0 -lpthread -lSound -lsqlite3 -lm
...
ifeq ($(PYTHON_VERSION),2.5)
LDFLAGS += -lpython2.5
CFLAGS += -I/path/to/python/2.5/include
else
...
endif

其中 PYTHON_VERSION 是您必须设置的变量。

或者如果你的路径是统一的:

LDFLAGS += -lpython$(PYTHON_VERSION)
CFLAGS += -I/path/to/python/$(PYTHON_VERSION)/include

如果您使用 SCONS,则可以更轻松地使用变体构建来编写此类构建的脚本。

不同版本的Python有不同的源代码吗?

或者您只想使用不同版本的 Python 编译和链接相同的源代码?

关于c - #include<>'ing 不同版本的 Python.h 并链接多个版本的 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11637791/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com