わかりました、私はこれのために 2 日間戦ってきました。それは通常、単純すぎて実現できないことを意味します。
ubuntuでクロスコンパイルする組み込みLinuxシステムがあります。Python をコンパイルするとき、コンパイルできなかったモジュールのリストに sqlite3 がありません。
ただし、_sqlite3.so ライブラリは、Python-2.6.6/build/lib.linux868-2.6/ の json.so や ctypes.so array.so などと同じ場所にはありません。
init-functions などを含む実際のモジュールは、Python-2.6.6/modules の適切な場所にあり、ターゲット システムでも見つけることができます。
so-file が見つからなかったので、arm-compiler を使用して共有ライブラリとして自分でコンパイルしてみました。これもうまくいきませんでした。
手動でコンパイルされた 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 の経験が豊富な人なら、ここで何が間違っているのか分かりますか?