【发布时间】:2012-09-12 09:58:42
【问题描述】:
好吧,我已经为此奋斗了 2 天,这通常意味着它太容易实现了。
我有一个嵌入式 linux 系统,我在我的 ubuntu 上进行交叉编译。编译python时,sqlite3不在无法编译的模块列表中。
但是,_sqlite3.so 库与例如 json.so 和 ctypes.so array.so 不在同一位置... 在 Python-2.6.6/build/lib.linux868-2.6/
具有 init-functions 等的实际模块位于正确的位置: 在 Python-2.6.6/modules 中,也可以在目标系统上找到。
由于 so 文件丢失,我尝试使用我的 arm 编译器将它自己编译为共享库。这也不起作用。
无需手动编译so-file:
>>> 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.so 是 python 构建器制作的东西,而 libsqlite3.so 是它需要构建它的库吗? libsqlite3.so 是从 Sqlite3 源代码构建的。我是不是搞错了?
任何拥有更多嵌入式 Linux 或 Python 经验的人都知道我在这里做错了什么?
【问题讨论】:
标签: python sqlite embedded-linux python-2.6 dynamic-library