【问题标题】:How to compile Python APSW with local build os SQLite如何使用本地构建操作系统 SQLite 编译 Python APSW
【发布时间】:2022-10-21 21:05:17
【问题描述】:

我正在开发一个应用程序,我想用一些个性化的标志编译 SQLite,并将这个 SQLite 版本与 APSW 一起使用!更具体地说,我想使用 SQLite 编译时选项文档 (https://www.sqlite.org/compile.html) 的推荐编译时选项部分中的选项。

我在 Ubuntu 中使用的是 3.39.4.0 版的 APSW 和 3.39.4 版的 SQLite。

1)第一次尝试:

我尝试在 build_ext 中使用带有 --definevalues 标志的合并,将我的选项传递给 CFLAGS,但我的选项似乎没有被应用。

我使用的命令行是:

python3 setup.py fetch --sqlite --version=3.39.4 build_ext --definevalues CFLAGS="Recommended Compile-time Options Here" install

2)第二次尝试:

在 APSW 文档中,我注意到在不合并的情况下构建 APSW 时,setup.py 将查找头文件 sqlite3/sqlite3.h 和库 sqlite3/libsqlite3.so。然后,我尝试生成共享对象 libsqlite3.so 并将 sqlite3.h 和 libsqlite3.so 复制到 apsw 根目录下的子目录 sqlite3 中。这些是我用来生成 libsqlite3.so 共享对象的命令。

gcc -lpthread -ldl -lm -c -fPIC sqlite3.c -o sqlite3.o
gcc sqlite3.o -shared -o libsqlite3.so

为了构建和安装 APSW,我使用了命令

python3 setup.py build install

安装运行良好,但是当我执行时

python3 -m apsw.tests

测试安装,我得到了错误

ImportError: cannot open shared object file: No such file or directory

我需要一些帮助来使用本地构建的 SQLite 构建 APSW。您是否知道一种简单的方法或我在尝试中做错了什么?

【问题讨论】:

    标签: python c++ sqlite gcc apsw


    【解决方案1】:

    您不需要处理 APSW。可以删除官方 SQLite 二进制版本来代替 Python 中包含的模块。因此,您编译 SQLite,替换 Python 附带的库,并使用现有的 Python 绑定(导入 sqlite3)。我在 Windows 上检查过它,但我想它也应该在 Linux 上工作。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-06
      • 2016-04-30
      • 1970-01-01
      • 2010-09-18
      • 2022-10-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多