您的位置:首页 > 数据库

sqlite3在mini2440上的移植

2011-05-11 09:41 429 查看



开发环境:

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


include


lib
,然后分别将

bin
下的文件下载到开发板的

/usr/bin
目录中,

lib
下的所有文件下载到开发板的

/usr/lib
目录中即可。

include
目录下是

sqlite


C
语言

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.org

的quick 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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: