交叉编译 SQLite
交叉编译 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 环境变量,让系统能够正确搜索到。同时在配置 CC,CXX,CPP 与 LD 环境变量时指定 --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相关推荐
- linux中sqlite3编译时出错,Sqlite3 交叉编译 undefined reference to `fdatasync' 错误解决
交叉编译sqlite到Android平台, Android.mk 文件内容如下: LOCAL_PATH:= $(call my-dir) INCDIR:=/home/android-ndk-r6b/s ...
- 嵌入式数据库Sqlite移植教程-转
嵌入式数据库Sqlite移植教程 sqlite-3.3.6编译安装与交叉编译全过程详细记录 本文介绍的内容都是基于 Linux RedHat 9.0 平台的. 一.PC机编译安装 请阅读在安装包里的 ...
- Python2.5.4移植到arm-linux
1 移植需求 需求:在Arm9上运行python2.5.4. ARM Target环境: S3C2410A & arm-linux-2.4.18,和 AT91SAM9261 &am ...
- 2020-03-22-fNIRS技术入门文章
layout title subtitle date author preview-img header-img catalog istop tags post fNIRS技术入门文章 fNIRS t ...
- sqlite 交叉编译-转
近段时间在学数据库,因为自身需求,所以注重研究了点嵌入式sqlite数据库, SQLite,是一款轻型的数据库,是遵守ACID的关联式数据库管理系统,它的设计目标是嵌入式的,而且目前已经在很多嵌入式产 ...
- sqlite的交叉编译及移植 -转
平台: PC机:redhat9.0 arm板:at91sam9260/linux-2.6.22 交叉编译器:armv51-linux-gcc 1..从sqlite的官方网站下载sqlite的最新版本源 ...
- sqlite编辑器 linux,SQLite3 ARM平台交叉编译
编译前准备工作 平台及资源 主机环境:ubuntu 14.04 开发板 :米尔科技 ARM 335X 系列 SQLite:SQLite3.26 下载网址:https://www.sqlite.org/ ...
- Linux应用开发: SQLite数据库交叉编译部署与运用
一.数据库介绍 1.1 数据库简介 数据库是以一定方式储存在一起.能与多个用户共享.具有尽可能小的冗余度.与应用程序彼此独立的数据集合,可视为电子化的文件柜--存储电子文件的处所,用户可以对文件中的数 ...
- cgo linux arm,Golang交叉编译各个平台的二进制文件
熟悉golang的人都知道,golang交叉编译很简单的,只要设置几个环境变量就可以了 # mac上编译linux和windows二进制 CGO_ENABLED=0 GOOS=linux GOARCH ...
最新文章
- P5667 拉格朗日插值2(拉格朗日插值,NTT, 倒推求逆元)
- MVC 之 属性详解
- 【GIS风暴】什么是地理空间智能(Geospatial AI)?
- Android之Canvas的drawRoundRect()
- jpush java api_JPush極光推送Java服務器端API
- linux用户登录实验,Linux用户和组相关命令及实验
- linux下rman自动备份,linux 下rman 自动备份
- 拿到大厂Offer了!
- FPGA跨时钟域处理方法延迟法
- php单图上传并预览,JavaScript实现单图片上传并预览功能
- opencv linux 编译好,linux下编译opencv
- 安装mysql8.0.11
- Pandas:DataFrame对象的基础操作
- 最强社工必备查询网址汇总
- JavaME开发环境的搭建
- Typora下载安装教程
- electron 剪贴板 截图_利用 Electron 开发快速截图工具(二)
- html5转换成mp4,ffmpeg将mov文件转换为mp4的HTML5视频标签IE9
- 计算机系女学霸男生追,杨紫李现解锁恋爱新姿势:吃最甜的糖,追最燃的梦
- 15版计算机应用基础知识整理,[电脑基础知识]计算机应用基础.ppt