共享库_sqlite3.so在Python 2.6.6上导入sqlite3时找不到



好吧,我已经为此奋斗了两天,这通常意味着它太简单了,无法实现。

我有一个嵌入式linux系统,我在我的ubuntu上交叉编译它。在编译python时,sqlite3不在无法编译的模块列表中。

但是,_sqlite3.so库与例如json.so和ctypes.so数组.so不在同一位置。。。在Python-2.6/build/lib.linux868-2.6/中

带有init函数等的实际模块位于正确的位置:在Python-2.6/模块中,也可以在目标系统中找到它。

由于so文件丢失,我尝试使用arm编译器将其编译为共享库。这也不起作用。

没有手动编译的so文件:

>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "rootfs/python/lib/python2.6/sqlite3/__init__.py", line 24, in <module>
  File "rootfs/python/lib/python2.6/sqlite3/dbapi2.py", line 27, in <module>
ImportError: /python/lib/python2.6/lib-dynload/_sqlite3.so: cannot open shared object file: No such file or directory

在lib dynloads中找到已编译的共享库:

>>> import sqlite3
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "rootfs/python/lib/python2.6/sqlite3/__init__.py", line 24, in <module>
  File "rootfs/python/lib/python2.6/sqlite3/dbapi2.py", line 27, in <module>
ImportError: dynamic module does not define init function (init_sqlite3)

编辑:我想知道我是否为sqlite3编译了正确的库。据我现在所知,_sqlite3.所以是python构建器制作的东西,libsqlite3.那么它需要构建它的库吗?libsqlite3.so是从Sqlite3源代码构建的。我错了吗?

任何有嵌入式Linux或Python经验的人都知道我在这里做错了什么?

请先在系统上编译并安装sqlite3,然后再编译python。或者只是

easy_install pysqlite

好的,想好了。不知怎么的,我没有正确地手动编译SO文件。让它这样工作:

首先在setup.py中,我添加了为sqlite3模块启用的详细调试。这增加了一个解决问题的打印输出:

skipping incompatible /usr/lib/libsqlite3.so
cannot find -sqlite3

这让我意识到,setup.py选择了第一条路径,在那里它可以找到任何名为sqlite3的模块,而忽略了它的体系结构。从setup.py中删除其他搜索路径,但我在其中有ARM编译库的路径,使它起作用。_sqlite3.so与所有其他模块一起编译得很好。

相关内容

  • 没有找到相关文章

最新更新