0%

SQLite3 移植

本文包含 SQLite3 的介绍、移植过程、注意事项和使用方式。

SQLite3

SQLite3 是一个开源的嵌入式关系数据库,我们可以将其嵌入到我们的应用程序中,从而实现对数据的管理。SQLite3 的源代码可以从 SQLite3 官网 下载。
以下内容仅为对我所做项目移植的记录,详细内容请参考 SQLite3 官方文档

SQLite3 移植

  1. 获取源码 https://www.sqlite.org/index.html
  2. 解压源码
    1
    2
    tar xvf sqlite-autoconf-3340000.tar.gz
    cd sqlite-autoconf-3340000
  3. 配置生成 Makefile
    1
    ./configure  --host=arm-linux-gnueabihf  --prefix=${PWD}/install
  4. make 编译
    1
    make
  5. make install 安装
    1
    make install
  6. install 目录下文件和主目录下 sqlite3 下文件进行移植到开发板根文件系统
    1
    2
    cp install/bin/sqlite3  /home/ming/rootfs/bin
    cp lib/libsqlite3.so.0.8.6 /home/ming/rootfs/lib
  7. libsqlite3.so.0.8.6 创建符号链接
    1
    2
    cd /home/ming/rootfs/lib
    ln -s libsqlite3.so.0.8.6 libsqlite3.so.0

SQLite3 注意

  1. 实际开发中移植工作尽量在 root 用户下进行
  2. 类库移植首先要拿到源码 和 所依赖的库或源码
  3. 确定类库运行的硬件平台 (X86架构 或 ARM架构),可以确定编译器的类型
  4. 修改Makefile 编译器(匹配硬件平台)
  5. 明确类库的调用方法(如何包含头文件 和 链接类库)
    在开发中 移植库的工作尽量在 root 用户下移植。因为操作资源是不单单是权限问题

SQLite3 类库使用

参考手册对 sqlite3 源码进行了编译 sqlite3 要运行在 157a 平台上(ARM 架构),所以我们需要修改 Makefile 对应的编译器

1
2
3
./configure --host arm-linux-gnueabi --prefix ./install
# --host:指定运行主机平台的 指定编译器编译源码
# --prefix:指定编译好的类库二进制文件的安装路径

污染交叉编译器 (不推荐)

  1. install/include 目录下的所有 .h 文件拷贝到 toolchain/gcc-7.5.0/arm-linux-gnueabihf/include 下,
    1
    2
    cd install/include
    sudo cp *.h toolchain/gcc-7.5.0/arm-linux-gnueabihf/include -arf
    此操作解决包含头文件的问题
  2. install/lib/libsqlite3.* 所有文件拷贝到 toolchain/gcc-7.5.0/arm-linux-gnueabihf/lib 下后,
    1
    2
    cd install/lib
    cp libsqlite3.* ~/toolchain/gcc-7.5.0/arm-linux-gnueabihf/lib -arf
    此操作解决的是使用 sqlite3 时链接库的问题 arm-linux-gnueabihf-gcc xxx.c -o xxx -lsqlite3 之所以将头文件和编译生成的库文件拷贝到交叉编译器对应的路径下能够解决问题,是因为交叉编译器的预处理包含头文件的路径在交叉编译器中链接器链接的路径也在交叉编译器中

添加环境变量

依据 pkgconfig 目录下的 sqlite3.pc 文件内容进行链接使用

  1. 打开 bash.bashrc 文件
    1
    vim /etc/bash.bashrc
  2. 添加环境变量 PKG_CONFIG_PATH
    1
    export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/home/ming/sqlite-autoconf-3340000/install/lib/pkgconfig/
  3. 使环境变量生效
    1
    source /etc/bash.bashrc
  4. 编译源码链接操作
    1
    arm-linux-gnueabihf-gcc server.c -o server `pkg-config --cflags --libs sqlite3`