Android中的sqlite3的安装和使用, /system/xbin/sqlite3[1]: syntax error: ‘(‘ unexpected问题解决,以及资sqlite3源下载

SQLite3源码下载与编译(开发环境:Win10+VS2022) 使用VS2022开发者命令行窗口编译SQLite3源码。非常简单 阅读详情

sqlite3简介:

Android系统采用了sqlite3数据库,这是一个关系型数据库,而且是一个轻量级的,广泛应用于嵌入式系统中。

最近,又在使用sqlite3了,遇到了下面的错误:

1). “/system/bin/sqlite3[1]: syntax error: '(' unexpected”;

2). error: only position independent executables (PIE) are supported;

3). CANNOT LINK EXECUTABLE: cannot locate symbol "uiter_setUTF8_51" referenced by "/system/lib/libsqlite.so"...
 

现将sqlite3的使用以及上述错误排除方法做一个总结。

sqlite3的安装条件:

sqlite3是一个可执行命令,在“adb shell“环境中使用。通常,位于/system/bin/  或者/system/xbin/目录下。

如果你在adb shell命令行中,有如下的运行结果,恭喜你,你的sqlite3可以使用。

./sqlite3                            

SQLite version 3.8.11.1 2015-07-29 20:00:57

Enter ".help" for usage hints.

Connected to a transient in-memory database.

Use ".open FILENAME" to reopen on a persistent database.

sqlite> 


但是,很多时候,设备中中并没有sqlite3命令,这就需要用户手动安装。然而, 安装sqlite3并非易事,因为/system目录是不可写的,无法将sqlite3写入到systemm目录下的bin(xbin)目录中。

这就需要获取到root权限,只有root权限才可以操作system目录。并且,需要将其属性改为可写属性。但是,正常的手机无法获取root权限。 这样,就形成了死锁。

这里,针对“可获取到root权限”的手机,进行sqlite3的安装(即将其copy到/system/xbin)目录下。

sqlite3安装步骤:

先准备sqlite3文件,可以从模拟器中copy。我这里是一个以前从一个root过的真机中copy出来的。

然后将其push到/sdcard/tmp目录下,如果没有tmp目录,可以直接copy到/sdcard目录下。

% adb push sqlite3 /sdcard/tmp/

% adb shell

shell@hammerhead:/ $ 

1|shell@hammerhead:/sdcard $ cd /sdcard/tmp

我们的目的是将这个sqlite3 copy到/system/xbin下面。
此时,/system还是不可写的,所以,先改变起属性为可写属性,通过mount命令。

1|shell@hammerhead:/sdcard/tmp $ mount -o remount,rw /system
mount: Permission denied

可见,普通用户无权修改mount。只能用root用户来操作(我的手机事先已经root过了)

255|shell@hammerhead:/sdcard/tmp $ su
root@hammerhead:/storage/emulated/0/tmp # mount -o remount,rw /system

1|root@hammerhead:/storage/emulated/0/tmp # cd /system/xbin

1|root@hammerhead:/system/xbin # cp /sdcard/tmp/sqlite3 .

//再修改sqlite3的权限:
1|root@hammerhead:/system/xbin # chmod 4755 sqlite3

 这样sqlite3就copy到/system/xbin/目录下了。

root@hammerhead:/system/xbin # ls
dexdump
sqlite3
wlutil

 新的错误出现了:

松了以口气,赶紧试一下,结果,直接打脸:
1|root@hammerhead:/system/xbin # sqlite3
/system/xbin/sqlite3[1]: syntax error: '(' unexpected

这是因为Android设备中的shell命令行下,无法识别sqlite3命令,这个设备不兼容我的sqlite3文件。

于是,从网上重新找了几个sqlite3命令,重复上面的过程,终于成功。

在我的这个手机上,最后只有sqlite3.armv7-pie可以用:

sqlite3

sqlite3.armv7  

sqlite3.armv7-pie  //成功

运行结果:(sqlite3.armv7-pie)

$ sqlite3.armv7-pie                                       
SQLite version 3.8.11.1 2015-07-29 20:00:57
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite> .help
.backup ?DB? FILE      Backup DB (default "main") to FILE
.bail on|off           Stop after hitting an error.  Default OFF

如果运行“./sqlite3.armv7”,就会出现如下错误:

error: only position independent executables (PIE) are supported.

期间,也试过将libsqlite3.so等copy到/system/lib目录下的方式,发生如下错误:

shell@hammerhead:/system/xbin $ ./sqlite3
CANNOT LINK EXECUTABLE: cannot locate symbol "uiter_setUTF8_51" referenced by "/system/lib/libsqlite.so"...
 

sqlite3资源: 

最后,附上sqlite3资源链接:

Android-sqlite3命令-Android开发-sqlite3_armv7-Android文档类资源-优快云下载包括如下版本:sqlite3,sqlite3_armv6,sqlite3_armv6-nofpu,更多下载资源、学习资料请访问优快云下载频道.https://download.youkuaiyun.com/download/liranke/84998341


sqlite3,小巧玲珑

android 4.4 api 19 sqlite3 not found sqlite3_enable_load_extension 解决以下问题 1.sqlite not found 2.CANNOT LINK EXECUTABLE: cannot locate symbol "sqlite3_enable_load_extension" referenced by "sqlite3" 适用于android 4.4 API 19版本,使用方法 1. 包含3个文件 sqlite3,libsqlite_jni.so,libsqlite.so 2. sqlite3 保存到 /system/xbin/ 给予 4755 权限 3. libsqlite_jni.so,libsqlite.so 保存到 /system/lib/ 给予 0644 权限 4. root 用户 cd 到 /system/xbin/ 目录 执行 sqlite3 立即下载

相关推荐

libsqlite.so 下载文件

包含arm64-v8a、armeabi等全部版本

Android 使用adb shell命令时出现sqlite3 : not found 问题 解决方法

在Android开发中,使用 adb shell 下的 sqlite3 命令来查看操作SQLite数据库时,遇到了 [ sqlite3 : not found] 问题。 网上找了下问题的原因——模拟器或真机中的 /system/xbin 目录下少了sqlite3 这个文件。   解决方法,步骤如下: (1)让/system文件夹可读写 #adb shell # mount -o re

ASC2046边角料 3442

启动盘安装Win10完整指南:U盘制作、BIOS设置与分区排错

系统重装是解决电脑卡顿、系统崩溃、病毒残留等问题的基础操作,而U盘启动盘则是目前最主流的安装介质。其核心原理在于通过Rufus等工具,将原版ISO镜像写入U盘,并依据主板固件类型(UEFI或Legacy)选择对应的GPT或MBR分区表,确保引导程序能正确加载。掌握这些底层概念,不仅能提升安装成功率,还能避免因引导模式不匹配导致的黑屏、无法启动等问题。在实际应用中,无论是老旧电脑升级、硬盘更换,还是需要纯净的系统环境,制作一个可靠的启动盘都是必备技能。本文从备份数据、下载官方镜像讲起,逐步演示U盘制作、启动快

weixin_32667955的博客 341

"cannot locate symbol "sqlite3_enable_load_extension" referenced by "sqlite3" 问题解决

问题mi 使用的sqlite版本是旧的,从4.1的虚拟机里面导出一个新的就可以了。 或者从这里下载http://pan.baidu.com/share/link?shareid=534077&uk=839950715

记录和分享程序人生的点点滴滴 6051

CUDA 12.1环境下的动态库链接修复:从libcusparse.so.12的undefined symbol错误到libnvJitLink.so.12的正确加载

本文详细解析了在CUDA 12.1环境下,PyTorch因libcusparse.so.12找不到libnvJitLink.so.12中的__nvJitLinkAddData_12_1符号而报错的根本原因。通过诊断动态链接过程,提供了创建符号链接、修改环境变量等三种解决方案,并深入探讨了nvJitLink组件的作用及环境配置的最佳实践,帮助开发者彻底解决此类动态库链接问题。

c8d9e0f1的博客 206

针对so层不固定位置的动态加密,怎么解决?(面试题)

Android逆向之破解某应用加密算法(动态调试so和hook so代码):so 代码动态解密后才执行,我们可以在解密完成后获取解密后的代码或数据。Android逆向之旅—动态方式破解apk进阶篇(IDA调试so源码)如果你有更具体的加密场景,欢迎提供更多信息,我可以给出更详细的方案!某些 so 在运行时生成密钥,解密后再用。某APP密码加密算法分析。

SXXYNHHXX的博客 927

sqlite3:not found 解决方法

sqlite3 为一个可执行脚本程序,在system/xbin/下面,某些品牌手机rom 不带这个东西,导致没有该工具。 所以在进行开发的时候在命令行用 adb 连接到手机使用 sqlite3 查看数据库出现 sqlite3:not found 网上搜索了一下,也有关于此问题的解决方法。 不过这里我给出一个相对来说比较简单的: 1、查看你手机的Andorid的版本,比如我的是 4.1 ...

huobengluantiao8 677

基于Simulink的防空导弹六自由度弹道建模与仿真实战

本文详细介绍了基于Simulink的防空导弹六自由度弹道建模与仿真方法。通过分析导弹动力学原理、Simulink环境配置、气动力建模、推进与控制系统设计等关键环节,提供了一套完整的实战指南。文章特别强调了六自由度模型在防空导弹仿真中的重要性,并分享了常见问题排查与优化建议,为相关领域工程师提供实用参考。

apple5的专栏 868

Android 9.0 Sqlite3 ARM不适配报错:“CANNOT LINK EXECUTABLE: cannot locate symbol...解决”的原因及解决办法

在adb shell运行sqlite3时,会出现not found或者Permission denied这样的错误,解决方案在网上都有,我的是Pixel, Android 9.0系统, system文件夹没有网上说的xbin文件夹,只有bin,参照模拟器安卓8或者9的sqlite3位置,把sqlite3文件放在bin文件夹即可。放的方法就不多说,关于权限和读写问题这里贴上简单的命令行即可: ...

qq_33623384的博客 6963

MTK6769平台Type-C充电全解析:从硬件管脚到PD协议实战(Android15环境)

本文深入解析了MTK6769平台在Android 15环境下Type-C充电的完整链路。从硬件管脚(特别是核心的CC引脚)功能与连接,到USB-PD协议报文抓取与实战分析,并结合MTK平台PD芯片驱动与充电IC驱动的软件框架,提供了从硬件设计到软件调试的系统性解决方案和常见问题排查案例。

ol78901234的博客 312

【即插即用模块】Transformer篇 | AAAI 2026 | Circulant Attention:全新ViT自注意力范式,复杂度从O(N²) 降至O(NlogN)!

本文提出了一种基于频域优化的循环注意力模块(Circulant Attention),通过离散傅里叶变换(DFT)将传统自注意力中的矩阵乘法转化为频域元素乘法,显著降低了计算复杂度。该模块采用复数线性层适配频域特征,并引入门控调制机制增强表达能力,在保持全局依赖捕捉能力的同时,将复杂度从O(N²)降至O(NlogN)。实验表明,该模块在多种视觉任务中均能提升模型性能,且计算效率更高。适用于需要高效全局注意力的视觉Transformer架构,可作为传统自注意力的替代方案。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 153

CANNOT LINK EXECUTABLE: cannot locate symbol

在termux中出现了该问题,无法定位链接库,也就是找不到依赖的库文件了,只需要把对应的库放在环境变量即可。 如他的错误信息中有 referenced by "/system/lib64/ ,那就把对应的位置加入环境变量,执行以下命令即可 export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/system/lib64/  ...

qq_35425070的博客 1万+

TSP:车为什么能和云端交互?

TSP:车为什么能和云端交互?

天赐好车的博客 414

真机使用sqlite3 调试数据库

一, 创建一个和真机sdk版本相同的模拟器。(注意:如果sqlite3版本不一致会出现错误) CANNOT LINK EXECUTABLE: cannot locate symbol "sqlite3_enable_load_extension" referenced by "sqlite3"... 将sqlite3文件取出到E盘 adb pull /system/xbin/sqlit

JavaLive09的专栏 2186

全网最强AI辅助课题申报教程!超详细流程拆解,助你快速提高课题申报成功率(附各部分高效提示词)

实验法要详细说明自变量、因变量、实验类型、实验过程、实验步骤、测量工具名称、被试取样方式、无关变量控制方法。这个部分就是让评审专家相信我们有能力把这个项目干成,写的时候要重点突出两块内容:第一是研究基础,包括你或团队在相关领域已有的研究成果,比如发表的论文、承担过的课题、获得过的奖励、相关研究经验等,要具体、有说服力;课题申报专门给我们留了一小节用来突出课题的创新之处,不管是研究角度、研究对象、研究方法,还是应用价值都可以提炼作为我们的创新点,最后的语气成果也要明确具体,且要和课题内容紧密相关。

智能AI让学术科研更容易 665

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Android-SQLite3_1-下载和安装SQLite

1.打开http://www.sqlite.org/download.html或者百度搜索SQLite,进入官网的download目录下 2.然后有几个选项。 我选择了一下几个选项下载了 docs Precompiled Binaries for Windows 当然还有source目录 大家可以去下载 3.安装 卧槽 打开一看 没有exe文件 这可怎么弄 只有两个文

u013108751的博客 1269

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Android使用adb命令时提示提示“CANNOT LINK EXECUTABLE: cannot ...”的原因及解决办法

错误提示:使用adb命令时,显示: CANNOT LINK EXECUTABLE: cannot locate symbol "__umask_chk" referenced by "/system/bin/sh"... 或者 CANNOT LINK EXECUTABLE: could not load library "libselinux.so" needed by "df"; caus

lp542718520的专栏 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

Android Studio 数据库Sqlite3 安卓工具类(简便开发)

目录一、数据库查看方式二、封装工具类三、使用Sqlite工具类(直接调用)1.增2.删3.改4.查使用App Inspection工具,此工具包括网络请求、数据库访问等功能,可以实时监控应用的行为。如图所示:源码:DatabaseHelper.java 实体类定义,查询使用,只用增、删、改 不用添加。UserBean .java 三、使用Sqlite工具类(直接调用) 1.增 2.删 3.改 4.查

Yun_yichen的博客 2186

Android的数据库Sqlite3

记载所学而已,不喜勿喷。

u012483313的博客 329

Android studio编译的so库,在安卓开发板上测试运行时遇到CANNOT LINK EXECUTABLE

具体遇到了CANNOT LINK EXECUTABLE:" ":cannot locate symbol "fwrite_unlocked" referenced by "* .so"错误,出现的是内核函数找不到符号,在Application.mk中将APP_PLATFORM := android-25(25代表安卓7.1,其他对应版本自行查找)改为对应的安卓开发板的系统,即可解决...

李智能的博客 3593

【bug 笔记 0001】sqlite3.OperationalError(‘near “(”: syntax error‘) in Google Colab

sqlite3.OperationalError(‘near “(”: syntax error’) in Google Colab best solution: !sudo add-apt-repository -y ppa:dqlite/stable !sudo apt update !sudo apt-get install -y sqlite3 !sqlite3 --version import sqlite3, os print(sqlite3.sqlite_version_info) os._e

weixin_43102407的博客 624

android开发adb shell下出现Sqlite3 not found解决办法

其原因是手机的 system/xbin中缺少sqlite3文件(附件有),把这个件复制进去就可以了。 方法一:可以用 adb软件把 sqlite3文件放进 /system/xbin/。这很容易遇到各种权限问题,很麻烦! 方法二:用root explorer 手机端软件把sqlite3文件放进 /system/xbin/。可以轻松解决权限问题,推荐! 具体方法: step1:将附件中

1650

Android-sqlite3 not found解决

使用sqlite3命令时,提示sqlite3 not found. 放狗搜了下,原因是手机中缺少sqlite3,解决方法如下: 1.确保手机已root。 3.下载sqlite3和libncurses.so 2.挂载 /system目录为可读写 >adb shell # mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system 3.把...

weixin_30654419的博客 194
上一篇: startActivity在Activity和Service中的不同实现,以及“Calling startActivity() from outside of an Activity”错误解决
下一篇: Android开发-Android uri使用一例:一个app启动另外一个app,以及使用PackageManager中getLaunchIntentForPackage来进行App的信息的获取
liranke
博客等级 码龄20年 4939粉丝 594原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liranke

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值