×
嵌入式 > 技术百科 > 详情

i.MX6开发板学习笔记一——Sqlite3数据库移植及测试

发布时间:2020-06-09 发布时间:
|

导读:i.MX6开发板采用了飞思卡尔i.MX6四核处理器,大步迈入嵌入式linux——一款iMX6开发板简单介绍了上手体验。本文将阐述如何在MY-I.MX开发平台上运行最新版sqlite3并简单测试。

使用硬件

MY-I.MX6 Demo开发平台

使用软件

linux Mfgtools 串口软件。

正文

1. 源码下载

下载最新的源代码,这里下载的是Sqlite 3.8.5的版本。

http://www.sqlite.org/2014/sqlite-autoconf-3080500.tar.gz

2. 交叉编译与移植

解压:

tar –xzf sqlite-autoconf-3080500.tar.gz得到sqlite-autoconf-3080500文件夹。

进入文件夹

cd sqlite-autoconf-3080500

配置文件configure

sudo ./configure --host=arm-linux

CC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-gcc AR=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ar LD=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ld STRIP=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-strip RANLIB=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-linux-ranlib CFLAGS="-mfpu=vfp -Os -lpthread -lrt" LDFLAGS=${LDFLAGS} --prefix=/home/bruce/share/work/sqllite/sqlite

--host=arm-linux表示交叉编译,目标代码为arm架构。还需要注意CC、AR等变量,如果不指定则无法完成下面的交叉编译,最后编译出的是x86的Sqlite。另外CC、AR等变量必须为全路径,否则会出现找不到的情况。

检验正确与否看下图中checking for arm-linux-gcc,如果后面出现上面设置的交叉编译器则表示成功。

--prefix=/home/bruce/share/work/sqllite/sqlite表示make install安装到这个目录中。

开始编译

sudo make

安装

sudo make install

这时在安装目录下应该会生成四个文件夹,bin include lib share。

bin         目录下是sqlite的可执行文件sqlite3;

include  目录下是头文件sqlite3.h sqlite3ext.h,后面的应用程序开发会用到这些头文件;

lib          目录下是编译生成的库文件,包括静态库和共享库;

share     目录下是Sqlite帮助文档man;

使用file命令查看sqlite文件类型等信息。

file sqlite3

sqlite3: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, not stripped

arm-linux-strip用于剥离调试信息,使文件变小。

root@ubuntu:~/share/work/sqllite/sqlite/bin# arm-linux-strip sqlite3

root@ubuntu:~/share/work/sqllite/sqlite/bin# file sqlite3

sqlite3: ELF 32-bit LSB executable, ARM, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.31, stripped

剥离之前为65164bytes:

root @ubuntu:~/share/work/sqllite/sqlite/bin$ ls -l

-rwxr-xr-x 1 root root 65164 Jun 20 19:13 sqlite3

剥离之后为52768,文件小了不少。

root@ubuntu:~/share/work/sqllite/sqlite/bin# ls -l

-rwxr-xr-x 1 root root 52768 Jun 22 19:56 sqlite3

拷贝共享库文件到开发板系统标准库路径 /lib文件夹下。

需要创建共享库的软链接

[root@freescale]# cd /usr/lib

[root@ freescale]# ln -s libsqlite3.so.0.8.6 libsqlite3.so.0

[root@ freescale]# ln -s libsqlite3.so.0.8.6 libsqlite3.so

移植ncurses

sqlite的运行需要ncurses库,因此我们还需要移植ncurses。方法和sqlite的移植差不多。

ncurses提供字符终端处理库,包括面板和菜单。

1. 下载库源码

库文件源码下载地址

http://mirror.bjtu.edu.cn/gnu/ncurses/

选择最新5.9版本

下载得到压缩文件ncurses-5.9.tar.gz

将压缩解压,得到目录ncurses-5.9

2. 编译

进入目录ncurses-5.9

以下配置与编译参考ncurses源文件中的INSTALL文件。

由于编译过程出现关于C++头文件的问题,所以配置时使用配置参数--without-cxx-binding,不对C++部分进行编译(具体说明详见源文件中的INSTALL文件)

2.1配置

[root@localhost ncurses-5.9]# ./configure --host=arm-linux

--prefix=/home/ncurses_cross

--with-shared

CC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi-gcc --without-cxx-binding

配置选项--host=arm-linux指明程序运行的系统平台,arm-linux

配置选项--prefix=/home/ncurses_cross指明编译结果安装路径

配置选项--with-shared 指明编译生成共享库文件

配置选项--without-cxx-binding不对c++相关文件进行编译

配置选项

CC=/opt/freescale/usr/local/gcc-4.6.2-glibc-2.13-linaro-multilib-2011.12/fsl-linaro-toolchain/bin/arm-fsl-linux-gnueabi--gcc配置交叉编译器路径

2.2编译与安装

编译

[root@localhost ncurses-5.9]# make

安装编译得到的文件,安装到配置时指定的路径 /home/ncurses_cross

[root@localhost ncurses-5.9]# make install

可以查看安装的文件

[root@localhost ncurses-5.9]# cd /home/ncurses_cross/

[root@localhost ncurses_cross]# ls

bin  include  lib  man  share

[root@localhost ncurses_cross]#

lib目录下就有我们需要的共享库文件libncurses.so.5.9

使用file命令查看文件的类型

[root@localhost lib]# file libncurses.so.5.9

libncurses.so.5.9: ELF 32-bit LSB shared object, ARM, version 1 (SYSV), dynamically linked, not stripped

处理器类型为ARM

3.移植

可以将交叉编译后的共享库文件拷贝到ARM开发板系统标准库目录 /lib。

 

测试sqlite数据库

编写测试程序mysqlite.c

在宿主机上交叉编译:

arm-linux-gcc -L/home/bruce/share/work/sqllite/sqlite/lib -lsqlite3 -o mysqlite3 mysqlite.c

编译选项-L/home/bruce/share/work/sqllite/sqlite/lib指明编译使用的库的路径

编译选项-lsqlite3指明编译使用的库的名字。

拷贝可执行文件到文件系统home/bruce/sqlite文件夹中,然后打包压缩下载到开发板中。

下图为在Ubuntu中操作的流程:

在开发板中测试

进入/home/bruce/sqlite文件夹,使用touch命令建立文件myfile,将运行结果输出到myfile文件。

执行./mysqlite3 > myfile命令后在该目录下会生成一个mydatabase.db的数据库文件。

查看myfile文件,发现建立数据库成功。


ˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉˉ



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
FPGA及CPLD应用领域不断拓展