gcc 如何使用本地编译操作系统SQLite编译Python APSW

5kgi1eie  于 2022-11-12  发布在  SQLite
关注(0)|答案(1)|浏览(201)

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

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。你知道一个简单的方法来做吗?或者我在尝试中做错了什么?

uyto3xhc

uyto3xhc1#

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

相关问题