sqlite3在嵌入式Linux上的移植步骤详解

深入理解SQLite3之sqlite3_exec及回调函数

sqlite3:深入理解sqlite3_stmt 机制

sqlite3: sqlite3_step 函数

sqlite3:sqlite3_bind 函数

sqlite3:sqlite3_column 函数

sqlite3:嵌入式linux下使用总结

    在前面的文章中,对sqlite3进行了一些零碎知识点分析, 本文分析一下sqlite3如何在嵌入式Linux上进行移植使用。sqlite3作为一种跨平台可移植的轻型 数据库,非常适合在嵌入式linux下使用,由于嵌入式linux主要使用ARM芯片,所以相比较PC,运算能力和内存 较差。sqlite3在嵌入式linux下运行,主要是以一个独立的应用程序来运行的,这也就意味着,当我们将sqlite3编译生成的  可执行程序 sqlite3 (包括必要的动态库)拷贝到 ARM平台后,是可以直接作为一个普通的应用程序来操作执行的,也就是相当于 一个小型的数据库,只不过我们与sqlite3交互是通过shell命令来实现的。当然这个数据库提供API接口,我们在自己的工程中,包含相关的头文件,就可以直接调用API接口函数, 实现与sqlite3的交互。

sqlite3在嵌入式Linux ARM 平台的移植步骤如下:

0、我的开发环境为ubuntu,交叉编译环境为 arm-linux-gnueabihf-gcc ,最好确保 已经安装了 automake、autoconf、libtool等工具,这些工具都是自动make所需的必要工具。 

1、sqlite3官网下载源文件  sqlite-autoconf-3290000.tar.gz,官网上有多种类型,我们要选择 autoconf 类型,可以自动编译配置,如下图所示:

2、解压源文件:

tar -zxvf sqlite-autoconf-3290000.tar.gz

3、我们在同级目录下,创建一个 release 目录,用于存放编译输出的各种文件,包括可执行文件、头文件、库文件等。

mkdir release

4、切换到源码目录下

cd sqlite-autoconf-3290000

5、配置交叉编译环境,输出目录参数,这也是整个移植步骤中,最重要的一步,毕竟我们需要告诉sqlite3,我们想要移植到的目标环境所需的交叉编译器和编译输出存放地址。

 ./configure --host=arm-linux-gnueabihf --prefix=/opt/extern-lib/sqlite3/release

   这里 --host 就是目标板的 交叉编译器 类型,--prefix就是输出 目录,注意这个输出目录 的路径必须为绝对路径。

6、运行 make 

7、运行 make install,这里需要注意一下,在README中,只有make,没有make install,但是只执行make,发现在输出目录release中是没有任何文件的,所以需要 再次运行 make install。

8、前面的步骤都没有报错的情况下,在release目录下会生成 bin、include、lib、share文件目录,存放了sqlite可执行文件、库文件、API接口头文件等。如果编译报错,一般都是我们自己的交叉编译器有问题,或者没有 安装 make 所需的一些工具,比如libtool等,这个可以参考readme中的介绍,先安装相关的 自动编译工具。

9、将bin/sqlite3 可执行文件 拷贝到 开发板 /usr/bin 目录下,因为sqlite是作为独立可执行程序来执行的。

10、将lib/libsqlite3.so libsqlite3.so.0 libsqlite3.so.0.8.6 拷贝到 开发板 /usr/lib目录下,主要是3个动态链接库,一个是库文件,另外两个是 链接。

11、注意:在使用 tftp 实现步骤9、10的时候,发现会改变 这些文件的 权限,比如 sqlite3 的源权限为:
   -rwxr-xr-x 
   tftp 下载后,就变成了 -rw-r--r--,要么自己修改权限,要么最好使用U盘拷贝。

12、此时在开发板上,就可以直接运行sqlite3 可执行 程序了。而我们自己的工程项目,只需要包含 include下的头文件,就可以直接使用sqlite3提供的各种C API接口函数了。

发布了247 篇原创文章 · 获赞 257 · 访问量 62万+

猜你喜欢

转载自blog.csdn.net/u012351051/article/details/100606712
今日推荐