查看: 2068|回复: 0

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

[复制链接]
  • TA的每日心情
    奋斗
    2015-10-8 09:49
  • 签到天数: 430 天

    连续签到: 1 天

    [LV.9]以坛为家II

    发表于 2014-7-16 08:01:33 | 显示全部楼层 |阅读模式
    分享到:
    i.MX6开发板采用了飞思卡尔i.MX6四核处理器大步迈入嵌入式linux——一款iMX6开发板简单介绍了上手体验。本文将阐述如何在MY-I.MX开发平台上运行最新版sqlite3并简单测试。

    使用硬件
    MY-I.MX6 Demo开发平台
    使用软件
    linux Mfgtools 串口软件。
    正文
    1. 源码下载
    下载最新的源代码,这里下载的是Sqlite 3.8.5的版本。
    https://www.sqlite.org/2014/sqlite-autoconf-3080500...
    2. 交叉编译与移植
    解压:
    tar –xzf sqlite-autoconf-3080500.tar.gz得到sqlite-autoconf-3080500文件夹。
    进入文件夹
    cd sqlite-autoconf-3080500
    配置文件configure
    sudo ./configure --host=arm-linuxCC=/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. 下载库源码
    库文件源码下载地址
    https://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文件,发现建立数据库成功。

    测试代码:src
    相关文章:
    大步迈入嵌入式linux——一款iMX6开发板
    i.MX6开发板学习笔记二——构建linux根文件系统
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    手机版|小黑屋|与非网

    GMT+8, 2024-11-18 08:50 , Processed in 0.119644 second(s), 17 queries , MemCache On.

    ICP经营许可证 苏B2-20140176  苏ICP备14012660号-2   苏州灵动帧格网络科技有限公司 版权所有.

    苏公网安备 32059002001037号

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.