对于sqlite项目的交叉编译,该项目难度并不大,在嵌入式开发方面也属于基础库。该文章的目标是编译一套aarch64 Linux Debian嵌入式版本上可以运行的版本库,基本无坑。老套路,先把linux桌面版搞好,然后 移植到嵌入式Linux Debian 板子上。
SQLite第一个Alpha版本诞生于2000年5月,是个老古董了,它是一款轻量型的数据库,实现就是一个小的C库。它是D.RichardHipp建立的公有领域项目。它的设计目标是针对嵌入式设备的,所以占用资源非常低,一般只需要几百K的内存就够了。他的特点有:
想对sqlite有更多了解:
sqlite通过configure文件来配置来编译,流程如下:
- $./configure
- $make
- $make DESTDIR=$PWD/out_x86_64 install
这里关于安装位置,可以通过--prefix=具体路径来设置。编译后out_x86_64生成库文件内容为:
- └── usr
- └── local
- ├── bin
- │ └── sqlite3
- ├── include
- │ ├── sqlite3ext.h
- │ └── sqlite3.h
- └── lib
- ├── libsqlite3.a
- ├── libsqlite3.la
- ├── libsqlite3.so -> libsqlite3.so.0.8.6
- ├── libsqlite3.so.0 -> libsqlite3.so.0.8.6
- ├── libsqlite3.so.0.8.6
- └── pkgconfig
- └── sqlite3.pc
因为是用aarch64交叉编译,需要提前配置环境,安装如下软件:
- sudo apt install binutils-aarch64-linux-gnu-dbg binutils-aarch64-linux-gnu cpp-aarch64-linux-gnu \
- g++-10-aarch64-linux-gnu g++-9-aarch64-linux-gnu g++-aarch64-linux-gnu g++ \
- gcc-10-aarch64-linux-gnu-base gcc-9-aarch64-linux-gnu-base gcc-aarch64-linux-gnu \
- pkg-config-aarch64-linux-gnu qemu-efi-aarch64 gcc arch-test
在sqlite的目录中创建一个类似configure的配置文件aarch64-configure,内容为:
- #!/bin/bash
-
- ARCH="aarch64"
- DEST_CPU="arm64"
- HOST_OS="linux"
- HOST_ARCH="x86_64"
-
- export LINK_host="g++"
- export CXX_host="g++"
- export CC_host="gcc"
- export AR_host="ar"
-
- export CC=aarch64-linux-gnu-gcc
- export CXX=aarch64-linux-gnu-g++
- export LD=aarch64-linux-gnu-ld
- export RANLIB=aarch64-linux-gnu-ranlib
- export AR=aarch64-linux-gnu-ar
- export AS=aarch64-linux-gnu-as
-
- if [ -f "configure" ]; then
- ./configure --prefix=$PWD/out_aarch64 \
- --host=aarch64-linux-gnueabi
- fi
配置后接下来和桌面版linux类似:
- $./aarch64-configure
- $make
- $make install
这里执行后安装位置默认为:out_aarch64。