sqlite3在ARM上的移植

来源:互联网 发布:mysql数据库下载 编辑:程序博客网 时间:2024/05/22 03:22

开发环境:

Mini2440 linux-2.6.32.2内核,

ubuntu9.10 arm-linux-gcc-4.3.2

http://www.sqlite.org/ 上下载 sqlite源代

二、移植步骤

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.执行make make install命令,如下:

make

如果出现arm-none-linux-gnueabi-gcc: 3.7.6.2": No such file or directory
<command-line>: warning: missing terminating " character
make: *** [sqlite3.lo] 错误 1
则修改makefile中的 -DPACKAGE_STRING=/"sqlite 3.7.6.2/" 把sqlite和3.7.6.2中间的空格去掉

make install

编译和安装完后,在/root/sqlite-3.6.22/build/target目录中会生成三个目标文件夹,分别是:bin includelib,然后分别将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.db在d盘。
   这样同时也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

原创粉丝点击