我正在开发一个应用程序,我想用一些个性化的标志编译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。你知道一个简单的方法来做吗?或者我在尝试中做错了什么?
1条答案
按热度按时间uyto3xhc1#
你不需要处理APSW。官方的SQLite二进制版本可以代替Python包含的模块。所以你编译SQLite,替换Python附带的库,并使用Python的绑定(导入sqlite3)。我在Windows上检查过它,但是,我想,它在Linux上也应该可以工作。