交叉编译 SQLite

概述

SQLite 是一个 C 语言库,它实现了一个小型、快速、自包含、高可靠性、功能齐全的 SQL 数据库引擎。SQLite 是世界上使用最多的数据库引擎。SQLite 内置于所有手机和大多数计算机中,并捆绑在人们每天使用的无数其他应用程序中。

SQLite 是一款轻型的数据库,是遵守 ACID 的关系型数据库管理系统。它是 D.RichardHipp 建立的公有领域项目。它的设计目标是嵌入式的,而且已经在很多嵌入式产品中使用了它,它占用资源非常的低,在嵌入式设备中,可能只需要几百K的内存就够了。它能够支持 Windows/Linux/Unix 等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有 ODBC 接口,同样比起 Mysql、PostgreSQL 这两款开源的世界著名数据库管理系统来讲,它的处理速度比他们都快。SQLite 第一个 Alpha 版本诞生于 2000 年 5 月。至 2021 年已经接近有 21 个年头,SQLite 也已经迎来了一个新的 SQLite 3 版本发布。

  • 官方网址:https://www.sqlite.org
  • GitHub: https://github.com/sqlite/sqlite

下载

如果以商用量产为目的,一般选择正式的发行版本为佳。在官方网址 Download 页面下方会显示最新可下载的源码压缩包。根据需求选择合适的版本进行下载,以最新的 3.40.1 版本为例,在页面下方点击链接下载源码包 sqlite-autoconf-3400100.tar.gz。

也可以直接使用 wget 命令下载:

wget https://www.sqlite.org/2022/sqlite-autoconf-3400100.tar.gz

如果需要使用特定版本,可以在 https://www.sqlite.org/src/timeline?t=release 位置找到 sqlite 的历史发行版本。进入网页之后选择 “check-in” 对应的链接,然后选择下载压缩包即可。


交叉编译

解压缩源码包:

tar -xvf sqlite-autoconf-3400100.tar.gz

解压缩源码包之后建议先阅读 README.txt 与 INSTALL 文档,里面有关于编译的相关信息。

让我们创建一个环境配置文件 aarch64-environment-setup,配置最重要的交叉编译环境变量。

aarch64-environment-setup:

export TOOLCHAIN_ROOT=/opt/toolchains/aarch64--glibc--stable-2022.03-1
export BUILDSYSROOT=$TOOLCHAIN_ROOT/aarch64-buildroot-linux-gnu/sysroot
export PATH=$TOOLCHAIN_ROOT/bin:$PATHexport PREFIX=/usrexport CC="aarch64-linux-gcc --sysroot=$BUILDSYSROOT"
export CXX="aarch64-linux-g++ --sysroot=$BUILDSYSROOT"
export CPP="aarch64-linux-gcc -E --sysroot=$BUILDSYSROOT"
export LD="aarch64-linux-ld --sysroot=$BUILDSYSROOT"
export AR=aarch64-linux-ar
export AS=aarch64-linux-as
export NM=aarch64-linux-nm
export GDB=aarch64-linux-gdb
export OBJDUMP=aarch64-linux-objdump
export OBJCOPY=aarch64-linux-objcopy
export RANLIB=aarch64-linux-ranlib
export READELF=aarch64-linux-readelf
export STRIP=aarch64-linux-stripexport CONFIGURE_FLAGS="--target=aarch64-linux --host=aarch64-linux --build=x86_64-linux --with-sysroot=$BUILDSYSROOT"export PKG_CONFIG_SYSROOT_DIR=$BUILDSYSROOT
export PKG_CONFIG_PATH=$BUILDSYSROOT/usr/lib/pkgconfig:$BUILDSYSROOT/usr/share/pkgconfig

在本示例中,交叉编译工具位于 /opt/toolchains/aarch64--glibc--stable-2022.03-1/bin 目录下,将该目录配置到 PATH 环境变量,让系统能够正确搜索到。同时在配置 CCCXXCPPLD 环境变量时指定 --sysroot=<dir> 参数让交叉编译器搜索 dir 目录下的头文件与库文件,而不是 /usr/include/usr/lib

cd sqlite-autoconf-3400100
source aarch64-environment-setup
./configure --prefix=/usr $CONFIGURE_FLAGS
make
make DESTDIR=/tmp/sysroot install
  • 源码包解压后,使用 cd 命令切换到源码路径
  • 在源码目录下创建环境设置文件并调用 source 命令让环境变量生效
  • 执行源码包的 configure 文件,带上 --prefix 参数,指定安装路径。在配置文件中定义了临时的 CONFIGURE_FLAGS 来指定 --host--build 选项的值,具体的说明可以使用 ./configure --help 命令进行查阅
  • 执行 make 命令编译源码
  • 使用 DESTDIR 参数作为安装目标文件的前缀变量,后面带上你希望安装到的文件夹路径,更详细介绍可以参考 DESTDIR 官方介绍,也可以参考我的博文《交叉编译 libcap》关于 DESTDIR 的用法说明。

最终你就可以在 /tmp/sysroot 文件夹中找到交叉编译好的 sqlite 的头文件及库文件。Good luck.

欢迎关注我的公众号:飞翔的小黄鸭
也许会发现不一样的风景


△\triangle△ 交叉编译 zlib

交叉编译 SQLite相关推荐

  1. linux中sqlite3编译时出错,Sqlite3 交叉编译 undefined reference to `fdatasync' 错误解决

    交叉编译sqlite到Android平台, Android.mk 文件内容如下: LOCAL_PATH:= $(call my-dir) INCDIR:=/home/android-ndk-r6b/s ...

  2. 嵌入式数据库Sqlite移植教程-转

    嵌入式数据库Sqlite移植教程 sqlite-3.3.6编译安装与交叉编译全过程详细记录 本文介绍的内容都是基于 Linux RedHat 9.0 平台的. 一.PC机编译安装 请阅读在安装包里的 ...

  3. Python2.5.4移植到arm-linux

    1       移植需求 需求:在Arm9上运行python2.5.4. ARM Target环境: S3C2410A & arm-linux-2.4.18,和 AT91SAM9261 &am ...

  4. 2020-03-22-fNIRS技术入门文章

    layout title subtitle date author preview-img header-img catalog istop tags post fNIRS技术入门文章 fNIRS t ...

  5. sqlite 交叉编译-转

    近段时间在学数据库,因为自身需求,所以注重研究了点嵌入式sqlite数据库, SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产 ...

  6. sqlite的交叉编译及移植 -转

    平台: PC机:redhat9.0 arm板:at91sam9260/linux-2.6.22 交叉编译器:armv51-linux-gcc 1..从sqlite的官方网站下载sqlite的最新版本源 ...

  7. sqlite编辑器 linux,SQLite3 ARM平台交叉编译

    编译前准备工作 平台及资源 主机环境:ubuntu 14.04 开发板 :米尔科技 ARM 335X 系列 SQLite:SQLite3.26 下载网址:https://www.sqlite.org/ ...

  8. Linux应用开发: SQLite数据库交叉编译部署与运用

    一.数据库介绍 1.1 数据库简介 数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合,可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数 ...

  9. cgo linux arm,Golang交叉编译各个平台的二进制文件

    熟悉golang的人都知道,golang交叉编译很简单的,只要设置几个环境变量就可以了 # mac上编译linux和windows二进制 CGO_ENABLED=0 GOOS=linux GOARCH ...

最新文章

  1. P5667 拉格朗日插值2(拉格朗日插值,NTT, 倒推求逆元)
  2. MVC 之 属性详解
  3. 【GIS风暴】什么是地理空间智能(Geospatial AI)?
  4. Android之Canvas的drawRoundRect()
  5. jpush java api_JPush極光推送Java服務器端API
  6. linux用户登录实验,Linux用户和组相关命令及实验
  7. linux下rman自动备份,linux 下rman 自动备份
  8. 拿到大厂Offer了!
  9. FPGA跨时钟域处理方法延迟法
  10. php单图上传并预览,JavaScript实现单图片上传并预览功能
  11. opencv linux 编译好,linux下编译opencv
  12. 安装mysql8.0.11
  13. Pandas:DataFrame对象的基础操作
  14. 最强社工必备查询网址汇总
  15. JavaME开发环境的搭建
  16. Typora下载安装教程
  17. electron 剪贴板 截图_利用 Electron 开发快速截图工具(二)
  18. html5转换成mp4,ffmpeg将mov文件转换为mp4的HTML5视频标签IE9
  19. 计算机系女学霸男生追,杨紫李现解锁恋爱新姿势:吃最甜的糖,追最燃的梦
  20. 15版计算机应用基础知识整理,[电脑基础知识]计算机应用基础.ppt

热门文章

  1. appcan案例书目录
  2. 证照之星最新企业免费版使用下载教程码
  3. deepinv2 添加打印机_在Deepin系统下配置连接Windows的共享打印机
  4. 一个真正简洁、干净的浏览器主页Speedceo
  5. 润乾报表学习:报表在页面的样式等的调整
  6. 2019中国MCN行业发展白皮书
  7. android Auto animate layout updates
  8. python3 案例分享-seaborn demo
  9. (手机拍照)3、构图
  10. 监控网络状态的好工具- Smokeping