• sqlite3在mini2440上的移植——基于ubuntu10.04


    <!-- @page { margin: 2cm } P { margin-bottom: 0.21cm } -->

    sqlite3mini2440上的移植

    一、开发环境:

    Mini2440linux_2.6.32.2内核,

    ubuntu10.04arm-linux-gcc-4.3.2

    http://www.sqlite.org/上下载sqlite源代码sqlite-3.6.22.tar.gz

    二、移植步骤

    1.解压数据库源文件并进入解压后的目录,如下:

    tar -zxvf sqlite-3.6.22.tar.gz

    cd sqlite-3.6.22

    2.创建一个目录build并进入该目录,用于在这个目录中进行交叉编译,如下:

    mkdir build

    cd build

    3.build目录中运行sqlite-3.6.22中的configure脚本生成Makefile文件,如下:

    ../configure --host=arm-linux --prefix=/root/sqlite-3.6.22/build/target

    选项host指定的是用arm交叉编译器进行编译

    选项prefix后面的路径是到时候编译安装后目标存放的目录,你可以任意设置

    4.执行makemake install命令,如下:

    make

    make install

    出现问题:

    arm-linux-ranlib /usr/local/sqlite3/lib/libsqlite3.a

    ./libtool: line 6619: arm-linux-ranlib: command not found

    错误,解决方法如下:

    sudo su //先切换到根用户

    export PATH=$PATH:/usr/local/arm/4.3.2/bin //设置根用户的环境变量

    编译和安装完后,在/root/sqlite-3.6.22/build/target目录中会生成三个目标文件夹,分别是:binincludelib,然后分别将bin下的文件下载到开发板的/usr/bin目录中,lib下的所有文件下载到开发板的/usr/lib目录中即可。include目录下是sqliteC语言API的头文件,编程时会用到。

    5.在开发板上测试移植的sqlite数据库。登录开发板的Linux,执行:

    sqlite3 demo.db

    sqlite3是一个sqlite的命令行访问程序,demo.db是新建的数据库的名字,必须以db作后缀。然后会看到下面的画面,说明移植成功。

    三、测试

    1、新建数据库

    [rootMrFeng]#sqlite3 test.db

    SQLite version 3.6.18

    Enter ".help" for instructions

    Enter SQL statements terminated with a ";"

    sqlite> create table film (number,name);

    sqlite> insert into film values (1,'aaa');

    sqlite> insert into film values (2,'bbb');

    sqlite> select * from film;

    1|aaa

    2|bbb

    sqlite>.quit

    [rootMrFeng]#

    蓝色部分为输入。

    2、测试程序

    这里以SQLite官方站点http://sqlite.orgquick start文档中的测试程序为例对移植到ARM-Linux上的SQLite3进行测试。该程序清单如下:

    //test_sqlite.c

    #include <stdlib.h>

    #include <stdio.h>

    #include <sqlite3.h>

    static int callback(void *NotUsed, int argc, char **argv, char **azColName)

    {

    int i;

    for(i=0; i<argc;i++)

    {

    printf("%s = %s/n", azColName[i], argv [i]);

    }

    printf("/n");

    return 0;

    }

    int main(int argc, char **argv)

    {

    sqlite3 *db;

    char *zErrMsg = 0;

    int rc;

    if( argc!=3 )

    {

    fprintf(stderr, "Usage: %s DATABASE SQL-STATEMENT/n", argv[0]);

    }

    rc = sqlite3_open(argv[1], &db);

    if( rc )

    {

    fprintf(stderr, "Can't open database: %s/n", sqlite3_errmsg(db));

    sqlite3_close(db);

    }

    rc = sqlite3_exec(db, argv[2], callback, 0, &zErrMsg);

    if( rc!=SQLITE_OK )

    {

    fprintf(stderr, "SQL error: %s/n", zErrMsg);

    }

    sqlite3_close(db);

    return 0;

    }

    使用如下命令编译测试程序:

    交叉编译时采用arm-linux-gcc -I /……(安装路径)/include -L/……(安装路径)/lib -o target src -lsqlite3

    arm-linux-gcc -o test_sqlite test_sqlite.c -lsqlite3 -L /opt/FriendlyARM/mini2440/sqlite-3.7.3/build/lib/ -I /opt/FriendlyARM/mini2440/sqlite-3.7.3/build/include/

    3、在上面新建的数据库目录下测试:

    [rootMrFeng]#./test_sqlite test.db "select * from film"

    number = 1

    name = aaa

    number = 2

    name = bbb

    [rootMrFeng]#

    1)

    创建数据库文件:

    >SQLite3 test.db 回车

    就生成了一个test.dbd盘。

    这样同时也SQLite3挂上了这个test.db

    2)

    .help可以看看有什么命令

    >.help 回车即可

    3)可以在这里直接输入SQL语句创建表格用;结束,然后回车就可以看到了

    4)看看有创建了多少表

    >.tables

    5)看表结构

    >.schema 表名

    6)看看目前挂的数据库

    >.database

    7)如果要把查询输出到文件

    >.output 文件名

    > 查询语句;

    查询结果就输出到了文件c:/query.txt

    把查询结果用屏幕输出

    >.output stdout

    8)把表结构输出,同时索引也会输出

    .dump 表名

    9)退出

    >.exit 或者.quit

  • 相关阅读:
    第二次结对编程作业
    第一次结对编程作业
    第9组 团队展示
    第一次个人编程作业
    第一次博客作业
    2016-2017-1 20155215 信息安全技术 补课上测试
    2017-2018-1 20155215 第九周 加分项 PWD命令的实现
    2017-2018-1 20155215 《信息安全系系统设计基础》实验三
    2017-2018-1 20155215 《信息安全系统设计基础》第9周学习总结
    2017-2018-1 20155215 《信息安全系统设计基础》第8周学习总结
  • 原文地址:https://www.cnblogs.com/swimmingfish2010/p/2312984.html
Copyright © 2020-2023  润新知