sqlite在安卓下使用ndk的交叉编译

对于linux系统,sqlite的交叉编译非常简单。下面分别以32位的arm和64位的arm为例进行介绍。

  1. 32位arm,以hisi3521a为例,首先进行配置:
    ./configure --prefix=/home/crystal/sqlite3/hisv300_install --host=arm-hisiv300-linux
    然后
    make;make install-strip
  2. 64位arm,以hisi3519dv500为例,首先进行配置:
    ./configure --prefix=/home/crystal/sqlite3/hisdv500_install --host=aarch64-v01c01-linux-gnu
    然后
    make;make install-strip
    对于安卓系统使用ndk编译,情况就不一样了,--host=aarch64-linux-android在configure的时候不会被识别,我采用下面的方法来生成,首先运行:
    ./configure --prefix=/home/crystal/sqlite3/android_install --host=aarch64-linux-gnu生成一份arm64位linux下的make file,然后修改这个makefile,将所有的aarch64-linux-gnu替换为aarch64-linux-android。
    另外,在makefile里CFLAGS和BUILD_CFLAGS都加上:-D__ANDROID_API__=27 -pie -fPIE --Wall。最后编译过程中找不到libdl.so,修改makefile的LDFLAGS = -L/home/crystal/all-android-toolchain/arm64/aarch64-linux-android/27/sysroot/usr/lib指定动态库路径。编译前记得export PATH=/home/crystal/all-android-toolchain/arm64/aarch64-linux-android/27/bin:$PATH。至此,就可以make;make install-strip了。
相关推荐
Anhty1 小时前
2026九月最新变声器测评:iOS安卓双端适配,低延迟运行更稳定
android·人工智能·功能测试·ios·智能手机
剑之所向1 小时前
.NET 官方`System.Threading.Channels`
前端·javascript·数据库
词却1 小时前
数据库基础:DQL 数据查询语言
数据库·oracle
渡我白衣2 小时前
并查集:基础认识与模拟实现
android·java·javascript·数据结构·c++·算法·并查集
昌原的儿子LEO3 小时前
Linux IO多路复用与SQLite数据库核心知识点总结
linux·数据库·oracle
山岚的运维笔记3 小时前
mysql 专业笔记 -- 第 8 章:使用变量
运维·数据库·笔记·后端·学习·mysql·dba
聚美智数4 小时前
网安查询-备案查询-网络安全查询API接口介绍
网络·数据库·web安全
坐吃山猪4 小时前
【多线程】Semaphore使用
java·数据库·oracle·多线程
Android-Flutter4 小时前
flutter GetX 详解
android·flutter
数智启示录4 小时前
PostgreSQL 内存调优实战(第 12 篇):work_mem 只调大 64 倍,峰值为什么远不止 64 倍
运维·数据库·经验分享·postgresql·面试