У меня есть пользовательская ОС Linux для платы ARM.Я собрал pysqlcipher3 для платформы в сборке yocto.Программа python3 не может определить символ sqlite3 в общих библиотеках.
>>> from pysqlcipher3 import dbapi2 as sqlcipher
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/usr/lib/python3.5/site-packages/pysqlcipher3/dbapi2.py", line 33, in <module>
from pysqlcipher3._sqlite3 import *
ImportError: /usr/lib/python3.5/site-packages/pysqlcipher3/_sqlite3.cpython-35m-arm-linux-gnueabihf.so: undefined symbol: sqlite3_enable_load_extension
Но я добавил пакеты sqlite3 в yocto.Я идентифицировал библиотеку в rootfs.
/ usr / lib / libsqlite3.so.0
Я проверил символы в библиотеке с помощью команды nm, и кажется, что в ней отсутствует символ(sqlite3_enable_load_extension).Пожалуйста, помогите мне решить эту проблему.На некоторых форумах было предложено использовать опцию LD_PRELOAD. Она портит операции sqlcipher
, когда я пытаюсь открыть базу данных, я получаю эту ошибку
getSingle failed file is encrypted or is not a database